[轉]由於應用程序的配置不正確,應用程序未能啓動,重新安裝應用程序可能會糾正這個問題

我們用 VS 2005 編寫非託管的程序, 在一臺未安裝 .net 開發環境的機器上運行會出現

"由於應用程序的配置不正確,應用程序未能啓動,重新安裝應用程序可能會糾正這個問題"。

開始時還以爲必須要安裝 .net Framework 2.0 , 然後安裝了 .net Framework 2.0 。發現仍然報錯。此時暈了, 這是爲什麼呢?

網上一查: 才知道是缺少 DLL 文件, 可是我的程序裏面有一部分是 MFC 寫的,有一部分是 Win32 , 還有很多 DLL, 以及驅動程序,缺少的DLL那就多了, 而且MFC 和 Win32 需要不同的 DLL。

後來用 dependens.exe 查看了各個應用程序需要哪些額外的DLL文件, 發現有些 DLL 確實是目標機器中沒有的 ,難怪會報錯. 以前用 VC 6.0 時 如果缺少 DLL 會給出提示,現在不給提示真讓人暈了,該死的 MS

我做了下面的試驗:

(1) 採用 VS 2005 默認的編譯器選項, 構建 Win32 程序, 檢查他需要哪些額外的 DLL。編譯選項如下圖所示:


build 後檢查生成程序需要下面的 DLL:

MSVCR80D.DLL, msvcrt.dll  在本機我找到了這2 個文件並和應用程序放在了同一目錄下, 結構還是報錯誤。根據已有的資料我知道,還缺少文件, 繼續找。

PS:把運行時庫改成 多線程(/MT)..禁用代碼優化也可以解決此問題..不過要生成Release版本.

我的VS安裝在 E: 盤, 從下面路徑中找:

E:/Program Files/Microsoft Visual Studio 8/VC/redist/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT 我們需要從這個文件夾中拷貝文件 Microsoft.VC80.DebugCRT.manifest ,該文件是文本格式的, 包含了版本信息。

注意現在我們構建的是 Debug 版本, 需要從這個文件中得到該文件。

總結: 構建 Win32 程序時, 採用VS默認的編譯選項, 需要下面文件:

(1) MSVCR80D.DLL

(2) msvcrt.dll (我測試過這個文件 , 即使沒有也沒有關係, 爲了保險起見還是加上吧)

(3)E:/Program Files/Microsoft Visual Studio 8/VC/redist/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT/Microsoft.VC80.DebugCRT.manifest

現在再試驗一下 Release 版本的:

Release 版本的程序直接就可以運行, 根本就不需要什麼其它的文件。

我又測試了其它幾個項目, win32 Release 版本不需要其它的文件。


MSVCR80D.DLL

MFC: 現在我添加了
mfc80d.dll
mfc80ud.dll
Microsoft.VC80.DebugCRT.manifest
Microsoft.VC80.DebugMFC.manifest
msvcr80d.dll
debug 版本纔可以運行

更詳細信息:

http://www.busfly.cn/post/5.html



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1811975

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