VC8.0編譯的程序出現The application failed to initialize properly (0xc0000005)

最近開發了一個系統,在簡體中文和繁體中文下都可以正常運行,但是到了英文版本下一打開會出現The application failed to initialize

 

properly (0xc0000005)這個錯誤,可能是因爲英文版本的系統太低了,還沒有更新所導致的,因爲我嘗試把源碼用VC6.0編譯的不會出

 

現這個錯誤,但是用VC8.0編譯以後拿過去測試還是會錯,於是我開始尋找解決方法,終於解決了。下面是我解決的方法。

 

在VC6中,Release版本的程序的部署,除了程序自身關聯的各個Dll之外,只需添加MFC42.dll即可。

 

但是在VC8.0中,發生的變化包括:

 

1.MFC的版本發生變化,最新的版本爲8.0,所有應該包括MFC80.dll

 

2.在VC2005的架構下,採用manifest進行dll的版本確認,因此需要添加MFC程序所需的manifest文件。

 

在VC2005的安裝目錄下:C:/Program Files/Microsoft Visual Studio 8/VC/下有一個文件夾爲redist專用於

 

程序的部署和發佈。在其中的x86文件夾用於Release版本的程序發佈,其中的Microsoft.VC80.MFC文件夾用於發佈MFC程序,包括混合

 

有Unicode以及CLR的程序,可以根據程序需要選擇copy。對於我個人的單純MFC的程序,只需要複製Microsoft.VC80.MFC.manifest

 

和mfc80.dll即可。其餘幾個,文件名稱中帶有“u”的表示兼容unicode編碼,帶有“m”表示使用託管代碼生成規則。

 

還有另一個解決的辦法:manifest文件(這個是我的應用的解決方法)

 

     在VC2005的開發環境下,選擇項目屬性-->清單工具-->輸入和輸出,在潛入清單位置,選擇“否”,這樣VC2005將會直接在

 

Release目錄下,exe文件的旁邊爲您生成一個同名的manifest文件,文件內容和Microsoft.VC80.MFC.manifest有關聯。直接複製這個

 

文件也可以起到效果。對不太熟練的開發人員,可以直接將這些dll統統複製到自己的exe文件所在目錄下,應該可以確保萬無一失,只不過

 

有的文件沒有被利用而已。最簡單的程序發佈方法莫過於直接複製文件,對依賴的dll文件,可以直接和exe文件放在同一個文件夾下,而不

 

將其複製到系統文件夾下。  

隔天測試機上又可以用原來的程序了,我發現測試機上的更新是自動開啓的,我覺得是自動更新了,所以還是要把這個方法記錄下來,分享

 

給大家!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章