轉自:http://www.byywee.com/page/M0/S530/530822.html
昨天編譯文件時出現了Building MFC application with /MD[d] (CRT dll version)requires MFC shared dll version~~~~的錯誤。
在網上很容易找到了解決的方案,公佈如下:
對着你的項目點擊右鍵,依次選擇:屬性、配置屬性、常規,然後右邊有個“項目默認值”,下面有個MFC的使用,選擇“在共享 DLL 中使用 MFC”,就OK了~~~
確實如此,可是知其然卻不知其所以然,於是我把MFC的DLL相關內容學習了一下,小結如下:
使用VS2008,在項目屬性中有一項MFC的使用,有三種設置:
1.使用標準Windows庫
2.在共享DLL中使用MFC
3.在靜態庫中使用MFC
第一種顧名思義。第二種指的是打包時一些MFC的DLL的內容沒有被包含在EXE文件中,所以EXE文件較小,但是運行時要求系統中要有相關的DLL文件。第三種是將DLL中的相關代碼寫進EXE文件中,文件較大,但是可以在沒有相關DLL的機器上運行。
同時,如果程序本來是第二種方式,發給同事,在同事機器上運行時,可能會出現錯誤:
“無法啓動程序……,由於應用程序配置不正確,未能啓動此應用程序。”
我覺得,在開發階段的程序都選第3種比較好吧,不用管。
看了上面說的,我就準備改成靜態庫中使用MFC,經過我修改以後發現有一點問題:general error c101008a: Failed to save the updated manifest to the file "...解決方案也列如下:
不能保存更新的文件,就是以前殘留的文件沒有刪除,即:要刪除Debug文件夾(這個問題以前已經討論過了,有些錯誤必須這樣做)
解決方法:2種方法:
第1種方法.手動刪除Debug,注:在VS2008有2個Debug,2個都要刪
第2種方法:自動刪除:在VC++6.0編譯器下,build--->Clean,而在VS2008下,build--->clean solution