VS2008下编的程序生成的EXE 在没有安装VS2008的计算机上能运行
我的系統是VISTA 用VS2008編的一個程序RELEASE生成的EXE文件 傳給別人的XP系統用VC6的電腦就不能打開 為什么?
我能夠打開XP下VC6編的程序
?
解決辦法:
修改你VC項目的屬性:常規選項中“MFC的使用”這里不要選擇“在共享DLL中使用MFC”要選擇“在靜態庫中使用MFC”,然后重新編譯。
參考:
VC2005運行庫文件?
隨著Visaul Stdio 2005的發布,VC++ 2005也有部分同學在使用,可是往往編寫的程序不能在其他電腦中執行,有些只能發布成靜態連接庫的形式發布,現在大家可以下載vc++2005的運行庫,約2.6Mb,相對26MB的.net 運行庫要小多了,這樣大家以后的程序可以大大減肥了!?
另附上:
VC2005編譯出來的程序文件,采用了manifest方式來指定dll文件。對于win98、win2000系統,把exe文件和VC的 dll連接庫放到一起就成了。對于winxp、win2003系統就要麻煩的多了,VC的連接庫默認是被放到了winsxs目錄下,結果造成在這些系統上,直接拷貝exe文件,往往是不能運行(找不到msvcr80.dll、mfc80.dll文件等),或者在事件日志中報錯。
解決方式:
方式一、在目標系統上安裝2005版vcredist_x86.exe。
方式二、直接拷貝VS8目錄下的VC \ redist \ x86 \? 目錄下的 Microsoft.VC80.MFC、Microsoft.VC80.CRT、Microsoft.VC80.MFCLOC幾個文件夾,到exe所在的目錄下,目錄結構如下:
.\myapp.exe
.\myapp.dll
.\Microsoft.VC80.CRT\
.\Microsoft.VC80.MFC\
.\Microsoft.VC80.MFC\Microsoft.VC80.MFCLOC\
然后修改Microsoft.VC80.MFCLOC目錄下的Microsoft.VC80.MFCLOC.manifest文件,將其中的version="8.0.50727.42",修改為version="8.0.50608.0"。
方式二的目錄結構,在xp和2003下是沒有問題的,但是在win98/win2000中,因為exe和dll不在同一目錄下,就會出現找不到dll的問題。
有什么更好的解決呢?呵呵,國外的一個大牛(http://blog.kalmbachnet.de)找到一絕招:
方式三、
? 1、首先編譯myapp.exe的時候,在配置中,選擇生成單獨的manifest文件,如:myapp.exe.manifest。
? 2、將myapp.exe、myapp.exe.manifest拷貝到一個目錄下
? 3、將Microsoft.VC80.MFC、Microsoft.VC80.CRT、Microsoft.VC80.MFCLOC幾個目錄下的文件,都拷貝到myapp.exe所在的目錄下。
? 4、將Microsoft.VC80.MFCLOC.manifest文件中的version="8.0.50727.42",修改為version="8.0.50608.0"。
? 5、編輯myapp.exe目錄下的所有 .manifest文件,將文件中的publicKey鍵值刪除,一般是publicKeyToken="1fc8b3b9a1e18e3b"
? 6、然后運行myapp.exe看看,嗯。
網友回復:首先你要用depends看看你的程序依靠哪些dll,比如依靠msvcr80.dll、msvcp80.dll、mfc80u.dll?
那么你需要這樣發布:?
/***************************************?
yourapp.exe?
msvcr80.dll?
msvcp80.dll?
mfc80u.dll?
Microsoft.VC80.CRT.manifest?
Microsoft.VC80.MFC.manifest?
other_thirdparty.dll?
****************************************/?
這些文件必須在同一目錄下,?
Microsoft.VC80.CRT.manifest和Microsoft.VC80.MFC.manifest?
可以分別在?
Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT?
和?
Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFC目錄下找到
轉載于:https://www.cnblogs.com/hgy413/archive/2011/08/05/3693738.html
總結
以上是生活随笔為你收集整理的VS2008下编的程序生成的EXE 在没有安装VS2008的计算机上能运行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 监听home键(andr
- 下一篇: svn里ignore不需要提交的用户文档