"由於應用程序的配置不正確,應用程序未能啓動,重新安裝應用程序可能會糾正這個問題"。
開始時還以爲必須要安裝 .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