一個關於VS2008在其他未安裝VS2008的電腦上無法執行編譯的程式的問題
這個應該是個向我這樣菜鳥普遍碰到的問題 一個困擾我很久的問題=.=
呵呵 剛開始學C++的時候就開始用VS2008(VC2008,VS9.0)了
當然新手剛開始學C++的時候都會新建Win32控制檯程式的專案了
這倒沒什麼問題 但編譯後生成的.exe應用程式不能在別的電腦上執行
(當時我花了很久時間做了一個漢諾塔的遊戲 本來想給朋友玩玩的 結果...唉...)
經過我反覆試驗 證明了這個程式只能在安裝過VS2008上的電腦執行
而沒有安裝過的電腦 不論是XP還是Vista都不行
那些的電腦總會出現如下的錯誤資訊:
由於應用程式配置不正確,應用程式未能啟動。重新安裝應用程式可能會糾正這個問題。
當然為了一個小遊戲要求別人裝一個3.7G的VS2008的程式不太可能吧
之後在網上搜索了挺久的 找到了兩個方法(搜尋結果也幾乎都是這兩種方法) 但是都不能解決這個問題
第一個是說安裝一個微軟釋出的vcredist_x86.exe(2.6 MB)補丁就行了
不過經過試驗 雙方電腦上安裝這個補丁都沒用
第二個方法就是安裝Framework啦
結果網上一搜 Framework有300來MB!!!
讓朋友下載了半天結果安裝到一半就顯示安裝失敗 幾次都是
然後又在微軟官網找到了一個2.6MB的Framework
結果下載下來是個下載程式 而且也是安裝到一半就失敗了 鬱悶啊...
(另外我也下載過一個60多MB的Framework 也是安裝失敗)
但皇天不負有心人啊!! 最近終於被我找到了解決方法了
其實只用改一下專案的屬性就行了
方法如下:
新建一個專案之後 按順序點選選單欄上面的
專案 >> XXX(專案名) 屬性 >> 配置屬性 >> 常規 >> MFC的使用 >> 在靜態庫中使用 MFC
配置屬性 >> C/C++ >> 程式碼生成 >> 多執行緒除錯(/MTd)
英文版的是
Project >> XXX Property>> Configuration Properties >> General >> Use of MFC >> Use Mfc Static
Configuration Properties >> C/C++ >> Code Generation >> Multithreaded, static link (debug) /MTD
然後除錯或生成就可以編譯出可以再其他沒有安裝VS2008的電腦上的程式了
而且你會發現.exe檔案大了很多
像我原來的漢諾塔遊戲只有45.5KB 改了專案屬性之後就有450KB!!
而需要做如此更改的原因是因為執行時庫的dll在各種不同版本的作業系統下可能不一樣
這是高手說的 我現在還不懂 呵呵
不過更改後有可能會發生另一個編譯錯誤 其顯示的錯誤資訊是
general error c101008a: Failed to save the updated manifest to the file "./Debug//_bpW.exe.embed.manifest". Bpcn
出現這個錯誤不用擔心 很容易就解決
主要是因為你在更改之前除錯過該程式
點選選單欄上的 : 生成 >> 清理 XXX(專案名)
英文版為 : Compile>> Clean XXX
再重新生成.exe檔案就OK了
呵呵 我也是查了很久才查到這些辦法的
也希望我這些努力對大家有所幫助啦