1. 程式人生 > >#error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version

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

昨天編譯檔案時出現了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