下面分三種情況對運行錯誤“由于應用程序的配置不正確,……”進(jìn)行解決,包括VC6.0、VC.NET2003、VC2005運行錯誤。
1、 VC6.0程序的一個(gè)運行錯誤
VC6.0程序的一個(gè)運行錯誤“由于應用程序的配置不正確,……”提示錯誤時(shí),是由于編譯程序時(shí)使用了共享連接庫的方式,在操作系統支持MFC框架且有MFC*.dll文件時(shí)是可以正常運行,但是在沒(méi)有MFC*.dll文件時(shí)會(huì )出現運行錯誤,需要在可執行的目錄下增加下列文件:MFC42D.DLL,MFCO42D.DLL,MSVCP60D.DLL,MSVCRTD.DLL四個(gè)文件,RELEASE版時(shí)需要增加MFC42.DLL,MFCO42.DLL,MSVCP60.DLL,MSVCRT.DLL四個(gè)文件。(這些文件可以在VC編譯器安裝目錄中找到,或者在系統目錄下找到)
2、 VC.NET2003程序的一個(gè)運行錯誤
VC.NET2003程序的一個(gè)運行錯誤“由于應用程序的配置不正確,……”提示錯誤時(shí),是由于編譯程序時(shí)使用了共享連接庫的方式,在操作系統支持MFC框架且有MFC*.dll文件時(shí)是可以正常運行,但是在沒(méi)有MFC*.dll文件時(shí)會(huì )出現運行錯誤,需要在可執行的目錄下增加下列文件:MFC71D.DLL,MFCO71D.DLL,MSVCP71D.DLL,MSVCRTD.DLL四個(gè)文件,RELEASE版時(shí)需要增加MFC71.DLL,MFCO71.DLL,MSVCP71.DLL,MSVCRT.DLL四個(gè)文件。。(這些文件可以在VC編譯器安裝目錄中找到,或者在系統目錄下找到)
3、 VC2005程序的一個(gè)運行錯誤
VC2005程序的一個(gè)運行錯誤“由于應用程序的配置不正確,應用程序未能啟動(dòng),重新安裝...”
VC.net2005寫(xiě)的程序如何在沒(méi)有.Net FrameWork的機器上運行 --解決"由于應用程序的配置不正確,應用程序未能啟動(dòng),重新安裝應用程序可能會(huì )糾正這個(gè)問(wèn)題"
最近在公司的主要工作是做一個(gè)桌面程序,提供給公司正在為移動(dòng)做的項目使用.我開(kāi)始時(shí)是用C#寫(xiě)的程序,后來(lái),公司要求,不安裝.net framwork 2.0, 要求我改成C++的.所以后來(lái)改成VC2005和程序.原來(lái)以為可以不用安裝,附帶幾個(gè)DLL庫就可以運行程序了,哪知道,開(kāi)始時(shí),在別的電腦上都不能運行,一運行就報錯,在XP如的錯誤如下圖:
在2000上也會(huì )報錯,不過(guò),他會(huì )提示:因為少了XXX DLL,程序無(wú)法啟動(dòng),于是我找到所以提示缺少的DLL放到程序目錄下,2000下就可以運行了.可是在XP上還是不行,還是會(huì )報上面那個(gè)錯誤,我猜肯定是少了哪個(gè)DLL,可是找不出來(lái),同事們也用了好多方法幫我找程序用到的DLL,也用到了不少的好工具,也找出了好多DLL,這些DLL加到一起,有10幾M那么多(如下圖).可是XP下還是不行.看來(lái)找DLL是沒(méi)辦法了.到網(wǎng)上找找辦法吧.
到百度里輸入"由于應用程序的配置不正確",搜索一下,嘿嘿,還真不少,都是和我一樣,VC2005寫(xiě)的程序,在2000下可以用,在XP,2003下不行,不過(guò)發(fā)現,都是有人問(wèn),沒(méi)人回答,可憐的人啊,咋就和我一樣不幸呢.繼續找啊找啊,找到了,找到一個(gè)人,提供了三個(gè)方法,摘下來(lái),如下:
最近在VS2005下用C++寫(xiě)了一個(gè)Console程序,在一臺未安裝VS2005上運行,顯示: "系統無(wú)法執行指定的程序"
原來(lái)用VC6和VS2003的話(huà),是會(huì )提示缺少"**.dll",但是用VS2005卻沒(méi)有這樣的提示。
用命令行方式運行,提示: "系統無(wú)法執行指定的程序" 直接雙擊運行,提示: "由于應用程序的配置不正確,應用程序未能啟動(dòng),重新安裝應用程序可能會(huì )糾正這個(gè)問(wèn)題"
自己實(shí)驗了一下,感覺(jué)以下兩種解決辦法是比較方便的:方法一:在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
把這幾個(gè)文件拷貝到目標機器上,與運行程序同一文件夾或放到system32下,就可以運行那個(gè)程序了。
其他release版,MFC程序什么的都是拷redist下相應文件夾下的文件就可以了,文件夾后都有標識!
方法二:修改編譯選項,將/MD或/MDd 改為 /MT或/MTd,這樣就實(shí)現了對VC運行時(shí)庫的靜態(tài)鏈接,在運行時(shí)就不再需要VC的dll了。
方法三:
工程-》屬性-》配置屬性-》常規-》MFC的使用,選擇"在靜態(tài)庫中使用mfc" 這樣生成的exe文件應該就可以在其他機器上跑了。
方法四:
你的vc8安裝盤(pán)上找到再分發(fā)包vcredist_xxx.exe和你的程序捆綁安裝
我逐一測試下來(lái),直到第三個(gè)方法才成功.第二個(gè)方法不知道在哪里修改編譯選項所以放棄了,第四個(gè)方法不喜歡,這跟直接安裝.net framework 2.0 有什么區別嗎?還不如直接安裝.net framework 2.0 呢.
使用第三種方法,編譯后,程序的文件會(huì )變大好多,因為其已經(jīng)將使用到的DLL庫靜態(tài)編譯到了程序里了.我這個(gè)程序原來(lái)的大小是288K,如圖:
而采用第三種方法生成的程序卻有2.85M那么大,如下圖所示:
不過(guò)比起那么多的DLL來(lái),這點(diǎn)大小不算什么.不過(guò),在運行時(shí),相信占用的內存應該會(huì )多一點(diǎn).
如果你正在使用VC2005,也出現這樣問(wèn)題的話(huà),就試試上面的方法吧.