最近在處理項目問題的的時候發(fā)現了這么一個問題,就是我們的程序在調用第三方提供的dll文件的時候在一臺機器上面會報14001的錯誤,但是在另一臺機器上面不會。兩臺機器上面的操作系統是相同的。針對這個問題和這個錯誤碼,查找了很多的相關資料。
vc錯誤查找的給予的對于14001的錯誤的解釋:由于應用程序配置不正確,應用程序未能啟動。重新安裝應用程序可能會糾正這個問題。
下面是搜集的一些網絡資料針對這個問題的說明和解決方法個人感覺還是很有參考意義的:
在VS2005下用C++寫的程序,在一臺未安裝VS2005的系統上,
用命令行方式運行,提示:
“系統無法執(zhí)行指定的程序”
直接雙擊運行,提示:
“由于應用程序的配置不正確,應用程序未能啟動,重新安裝應用程序可能會糾正這個問題”
以前用VC6和VS2003的話, 如果缺少庫文件,是會提示缺少“**.dll”,但是用VS2005卻沒有這樣的提示。
自己實驗了一下,感覺以下幾種解決辦法是可行的:
方法一:
在類似C:/Program Files/Microsoft Visual Studio 8/VC/redi
st/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT 下找到了下列文件:
msvcm80d.dll
msvcp80d.dll
msvcr80d.dll
Microsoft.VC80.DebugCRT.manifest
把這幾個文件拷貝到目標機器上,與運行程序同一文件夾或放到system32下,就可以正確運行了。
其他release版、MFC程序什么的都是拷redist下相應文件夾下的文件就可以了,文件夾后都有標識!
方法二:
修改編譯選項,將/MD或/MDd 改為 /MT或/MTd,這樣就實現了對VC運行時庫的靜態(tài)鏈接,在運行時就不再需要VC的dll了。
方法三:
工程-》屬性-》配置屬性-》常規(guī)-》MFC的使用,選擇“在靜態(tài)庫中使用mfc”
這樣生成的exe文件應該就可以在其他機器上跑了。
方法四:
你的vc8安裝盤上找到再分發(fā)包vcredist_xxx.exe和你的程序捆綁安裝。
如果安裝Microsoft Visual C++ 2005 出現如下錯誤↓:
事件查看器顯示:產品: Microsoft Visual C++ 2005 Redistributable -- Error 1935.安裝程序集“Microsoft.VC80.ATL,type="win32",version="8.0.50727.4053",publicKeyToken="1fc8b3b9a1e18e3b",processorArchitecture="x86"”過程中發(fā)生錯誤。請參閱幫助和支持獲取詳細信息。HRESULT: 0x80070422。程序集接口: IAssemblyCacheItem,功能: Commit,組件: {97F81AF1-0E47-DC99-A01F-C8B3B9A1E18E}
解決方法:啟動 Windows Modules Installer 服務,再安裝。OK,解決。
http://social.msdn.microsoft.com/forums/en-US/vcgeneral/thread/66bc8cab-c134-49a8-85e5-37ca9efbdeb4/
個人問題解決過程:
1.考慮的是兩個方面:
一個是程序調用的dll是否提供了所要的方法;
一個是dll所依賴的dll是否完整。
這兩方面都是通過depends工具來查看
2.我的問題是我用的是別人提供的dll文件自己不可以去更改dll文件的生成方式,因此所做的工作就是設法去導入dll所依賴的dll文件。
(1)配置系統環(huán)境變量的path路徑使dll做可能依賴的系統dll文件能夠找到依賴的dll。
(2)推測第三方所提供的dll開發(fā)時候應該用的是vs2005或者vs2008在或者就是vs2010,然后所提供的dll文件或許就是動態(tài)加載的dll,所以安裝了vcredist_x86的vs2005,vs2008以及vs2010版本的,這個地方的操作對于我解決問題起了作用,但是具體是哪一個這個沒有去確定
(3)為了使自己程序運行的環(huán)境沒有必要都去安裝vcredist_x86所以找到vcredist_x86安裝之后對應的dll文件和調用的第三方的dll放在同一個目錄下面,也可以放在C:/WINDOWS/system32但是path路徑中的配置一定要有,一般來說都是會有的。
通過上面的三個方面?zhèn)€人的問題是解決了,當然具體到個人的項目里面還有很多的方面要考慮,但就這個dll加載的14001錯誤,上面的解決方法還是ok的。網上的相關資料還是很多的,希望個人整理的這些對你有小小的幫助。針對vcredist_x86的dll文件以及vs2005,vs2008 和 vs 2010對應的exe安裝文件可以搜一下,我也把我搜到的上傳一下,共享。
據其他網友推薦使用下面的方法
在Win7中運行某些軟件時,突然提示出錯信息“應用程序無法啟動,因為應用程序的并行配置不正確。有關詳細信息,請參閱應用程序事件日志,或使用命令行sxstrace.exe工具。”
查看win7應用程序事件日志:計算機——>右擊——>管理——>事件查看器——>應用程序和服務日志
出現這個問題是因為安裝windows7 后,或使用ghost版本安裝后,
所以到微軟官方網站下載:Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)下載:http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=zh-cn
注意:安裝完了后,還需要重啟一下計算機。
比較方便的方法直接下載 VC Redist Installer
由于應用程序配置不正確,應用程序未能啟動等綠色軟件不能打開,一般都是缺少必要的vc運行庫。
VC Redist Installer由國外網友McRip制作,匯集VC2005、VC2008、VC2010、VC2012、VC2013運行庫,包含32及64位版本,安裝自動判斷。這些運行庫都采用Visual Studio 20XX編寫的軟件必須使用公用DLL運行庫。網上某些精簡軟件沒有附帶這些公用DLL,會導致這些綠化軟件沒法正常運行,出現“應用配置不正確”錯誤或者缺少msvcp71.dll、msvcr71.dll錯誤,安裝對應VC庫即可解決,這是最全最新的VC運行庫的集合,安裝完本庫以后再使用綠色軟件、游戲就不會再出這個錯了。
VC++運行庫有什么用?
我們?yōu)槭裁匆褂盟渴裁磿r候需要它?太深奧的理論就不多說了,舉個簡單的例子,我們從網上下載來一些綠色精簡軟件或個人軟件作品或某些游戲,運行的時候發(fā)現報錯,常見的有:缺少或丟失msvcp71.dll、msvcr71.dll、msvcrt.dll、msvcrt.dll等;無法啟動此程序,因為計算機中丟失 mfc*.dll。嘗試重新安裝該程序以解決此問題。因為這些軟件是用采用Microsoft Visual Studio編寫的,它們運行的過程中必須使用公用的DLL運行庫,即上在所說的VC運行庫。
了解了原因之后,解決方法也就明白了,有兩種途徑:一是安裝Microsoft Visual C++運行庫集成包;二是去網上尋找對應版本的VC運行庫DLL文件,然后再手動復制到系統目錄里。前者肯定不行,那軟件太龐大了,沒有必要為了幾個運行庫文件去下載上G的文件。后者太麻煩了,要去網上尋找,下載后還要自己手動導入,而且32位和64位系統的導入目錄是不同的。
vc運行庫包含組件:
現在好了,有了VC Redist Installer,一切就變得簡單了,它內置了全部的VC運行庫DLL文件,其組件包括:
匯聚以下組件庫:
- Visual C++ 2005 x86;
- Visual C++ 2005 x64;
- Visual C++ 2008 x86 9.0.30729.7523;
- Visual C++ 2008 x64 9.0.30729.7523;
- Visual C++ 2010 x86 10.0.40219.455;
- Visual C++ 2010 x64 10.0.40219.447;
- Visual C++ 2012 x86 11.0.60830.0;
- Visual C++ 2012 x64 11.0.60830.0;
- Visual C++ 2013 x86 12.0.21005.1;
- Visual C++ 2013 x64 12.0.21005.1;
- Microsoft Visual F Runtime 2.0;
- Older Microsoft Runtimes for older software;
注意/幫助:安裝過程可以自行選擇,并不是要全部安裝,在Windows 7下做了測試,全部安裝的話時間比較長。需要說明的是如果沒有開啟Administrator超級用戶則需要右鍵“以管理員身份”運行該軟件并執(zhí)行安裝!同時,鑒于第三方軟件可能會誤報,實屬正常,總之,放心使用即可!
新聞熱點
疑難解答
圖片精選