轉貼(可行) VC.net2005寫的程式如何在沒有.Net FrameWork的機器上運行 --解決"由於應用程式的配置不正確,應用程式未能啟動,重新安裝應用程式可能會糾正這個問題" 最近在公司的主要工作是做一個傳統型程式,提供給公司正在為移動做的項目使用.我開始時是用C#寫的程式,後來,公司要求,不安裝.net framwork 2.0, 要求我改成C++的.所以後來改成VC2005和程式.原來以為可以不用安裝,附帶幾個DLL庫就可以運行程式了,哪知道,開始時,在別的電腦上都不能運 行,一運行就報錯,在XP如的錯誤如: 在2000上也會報錯,不過,他會提示:因為少了XXX DLL,程式無法啟動,於是我找到所以提示缺少的DLL放到程式目錄下,2000下就可以運行了.可是在XP上還是不行,還是會報上面那個錯誤,我猜肯定 是少了哪個DLL,可是找不出來,同事們也用了好多方法幫我找程式用到的DLL,也用到了不少的好工具,也找出了好多DLL,這些DLL加到一起,有10 幾M那麼多(如).可是XP下還是不行.看來找DLL是沒辦法了.到網上找找辦法吧. 到百度裡輸入"由於應用程式的配置不正確",搜尋一下,嘿嘿,還真不少,都是和我一樣,VC2005寫的程式,在2000下可以用,在XP, 2003下不行,不過發現,都是有人問,沒人回答,可憐的人啊,咋就和我一樣不幸呢.繼續找啊找啊,找到了,找到一個人,提供了三個方法,摘下來,如下: 最近在VS2005下用C++寫了一個Console程式,在一台未安裝VS2005上運行,顯示: "系統無法執行指定的程式" 原來用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執行階段程式庫的靜態連結,在運行時就不再需要VC的dll了。 方法三: 工程-》屬性-》配置屬性-》常規-》MFC的使用,選擇"在靜態庫中使用mfc" 這樣產生的exe檔案應該就可以在其他機器上跑了。 方法四: 你的vc8安裝盤上找到再分發包vcredist_xxx.exe和你的程式捆綁安裝 我逐一測試下來,直到第三個方法才成功.第二個方法不知道在哪裡修改編譯選項所以放棄了,第四個方法不喜歡,這跟直接安裝.net framework 2.0 有什麼區別嗎?還不如直接安裝.net framework 2.0 呢. 使用第三種方法,編譯後,程式的檔案會變大好多,因為其已經將使用到的DLL庫靜態編譯到了程式裡了.我這個程式原來的大小是288K,: 而採用第三種方法產生的程式卻有2.85M那麼大,如所示: 不過比起那麼多的DLL來,這點大小不算什麼.不過,在運行時,相信佔用的記憶體應該會多一點. 如果你正在使用VC2005,也出現這樣問題的話,就試試上面的方法吧. |