Building MFC application with /MD[d] (CRT dll version)requires MFC shared dll version~~~~

轉自: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


發佈了77 篇原創文章 · 獲贊 103 · 訪問量 85萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章