VS2010 MFC exe独立系统环境运行
如何讓一個VS 生成的 exe 在沒有安裝VS 以及 依賴項dll 的電腦上運行,嘗試了一下,將中間遇到的問題記錄一下。
1. 在vs里面編譯運行可以,但是點擊Debug里面的.exe卻顯示如下問題:
程序目錄下已經添加此dll文件,一般情況下,我們會把程序中調用到的dll 文件放于.exe同一目錄下。
顯示為dll文件問題,后發現為路徑問題,我的.exe文件 路徑為:工程目錄/x64/Debug/**.exe,后將 .exe文件拷貝至 工程目錄/Debug/**.exe ,點擊可以運行。因為我在工程目錄下添加了lib、include、Resource等文件夾,代碼中有關路徑的問題導致的。
2.? 在其他電腦上 用程序無法正常啟動0xc0150002?的問題:
試用的另一臺電腦有安裝vs等,但是不管是點擊exe還是直接用vs打開編譯都會出現此類錯誤。
查找資料有說將設置為在靜態鏈接庫中使用MFC和MT,但是如果使用的靜態庫會有很多錯誤,未識別的外部符號等,還需要自己重新靜態編譯庫,還是pass掉此種方法。
考慮到是因為機器上的dll文件不相同所致,可能是機器上沒有需要的dll文件,即使有也不能保證dll文件的版本相同。
借助于工具 Dependence 來查看所生成的exe文件依賴的dll文件有哪些 ,可以從此網站下載軟件http://www.dependencywalker.com/
如圖:
無視紅色的錯誤提示信息,左側窗口可以查看.exe都是依賴于哪些dll文件,將這些dll文件全部拷貝到.exe文件夾目錄下,可以運行。
opencv類的都在opencv安裝目錄下OpenCv244\opencv\build\x64\vc10\bin;
msvcp100.dll等在 s安裝目錄\VC\redist\x64\Microsoft.VC100.CRT和\VC\redist\Debug_NonRedist\x64\Microsoft.VC100.DebugCRT;
?需要的系統的dll文件都在C:\Windows\System32,在我需要的項目中光此文件下的dll文件就拷貝了二十多個。
4. 同樣是3的問題中,將exe所有依賴的dll文件全部換為32位的,程序報**.dll文件沒有被指定在windows運行,或者包含錯誤。 我以為系統32位dll文件在C:\Windows\SysWOW64路徑下。sysWoW64 (Windows-on-Windows 64-bit)是一個Windows操作系統的子系統, 能夠運行32-bit 應用? windows操作系統程序, 并且在所有的64-bit 版本的windows上都存在。 之前換成系統在C:\Windows\System32下的dll文件會報錯,后來就換成自認為32位dll所在的C:\Windows\SysWOW64,兩者程序報錯相同。 后從網上從新下載dll文件拷貝到exe同目錄下,可以運行。 后發現所調的文件在C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include下。
5. 問題4解決后,程序的某些功能失效,比方說點擊一個按鈕,打開一個對話框,這時候對話框彈不出來。 這種情況,我在測試電腦上裝了vs2010后,把 exe同目錄下系統dll文件刪除,這樣程序會調用系統的dll文件,這個時候對話框可以打開,發現是所調用的dll文件不同。 且opencv的功能有問題,cvcapture一直返回NULL,疑似是dll文件拷貝不全的原因,將dll文件全部拷貝到exe同目錄下沒有問題。但是另用一臺電腦依舊只返回NULL,此原因沒有確切搞清楚。
總結
以上是生活随笔為你收集整理的VS2010 MFC exe独立系统环境运行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vs2010 MFC 简单制作过程中的
- 下一篇: 《STL源码剖析》学习--6章--pow