loadlibrary(xxx.dll) 失敗 返回14001 由於應用程序配置不正確 應用程序未能啟動.重新安裝應用程序可能會糾正這個問 .


轉載請標明是引用於 http://blog.csdn.net/chenyujing1234 

歡迎大家拍磚!

一、應用背景

有一個在win7中用VS2008編譯成功,運行正常的程序:Exe+DLL;

放到XP虛擬鏡像上運行卻提示:LoadLibrary返回14001。

(1) 后來采用了下面方法中的“方法一”解決了。

(2) 但在方法一的基礎上還要安裝VS2008對應的分發包vcredist_x86.exe

(VS2005的安裝目錄下提供了此文件,但在VS2008去不提供,但可到網上下載)。

參考文章:

http://hi.baidu.com/roger_long/item/867a7cf6fd8cf4cc521c26c5

 

二、網上資料

有些機器出現這樣的問題,有些沒有!有些控件無問題,有些有問題。以前做安裝測試都是項目經理負責,我從來不關心這種問題。現在的公司,沒有這樣全職的職位負責。還是自己來吧。

根據經驗出現這種問題,肯定動態鏈接的DLL問題
1.在可以使用控件機器上使用 depends 發現,原來比較特別就是安裝了CRT運行
2.不行的機器上,無安裝CRT
3.為什么有一個控件,就算是無安裝CRT也可以運行,但大家都靜態連接到ATL
4.於是把xp的CRT DLL復制到2003,還是不行(可能2003與xp CRT不同,沒有繼續嘗試)
5.到網上找找還真到答案 "loadlibrary 失敗 由於應用程序配置不正確 應用程序未能啟動 crt"

============================================================================
解決:

方法一:

在C:\Program Files\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT 下找到了下列文件:

msvcm80d.dll
msvcp80d.dll
msvcr80d.dll
Microsoft.VC80.DebugCRT.manifest

把這幾個文件拷貝到目標機器上,與運行程序同一文件夾或放到system32下,就可以運行那個程序了。

其他release版,MFC程序什么的都是拷redist下相應文件夾下的文件就可以了,文件夾后都有標識!

注意:

(1)如果是VS2008版本的那么到C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugCRT路徑下找文件。

(2)如果是放到system32下,那么還要改系統環境變量。

方法二:
修改編譯選項,將/MD或/MDd 改為 /MT或/MTd,這樣就實現了對VC運行時庫的靜態鏈接,在運行時就不再需要VC的dll了。

方法三:

工程-》屬性-》配置屬性-》常規-》MFC的使用,選擇"在靜態庫中使用mfc"
這樣生成的exe文件應該就可以在其他機器上跑了。

方法四:

你的vc8安裝盤上找到再分發包vcredist_xxx.exe和你的程序捆綁安裝


方法一:原來我就差 Microsoft.VC80.DebugCRT.manifest 這個文件就成功了,可以那個時候沒有繼續試
方法二:這個方法最好,適應多種工程
方法三:MFC才適用吧
方法四:比較大的項目比較好!

 

三、擴展

 

解決方法:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM