應用程序正常初始化(0xc015002)失敗解決方法
VS2005 sidebyside manifest error Microsoft.VC80.MFC Microsoft.VC80.CRT Microsoft.VC80.MFCLOC msvcr80.dll mfc80.dll eventlog
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看看。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.