1. 程式人生 > 其它 >使用MFC時報錯的解決方法。C1189 #error directive: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]

使用MFC時報錯的解決方法。C1189 #error directive: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]

  • 原來的專案需要追加一個截圖的功能。我將其封裝成一個類,但是在新增到專案時爆出了以下錯誤。
C1189 #error directive: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
  • 原因

    因為建立的不是MFC工程,所以缺少一些關於MFC工程的定義。

  • 修改方法

編譯器已經給出來解決方法。要麼不要使用Md選項,要麼在程式碼中新增 #define _AFXDLL預定義指令。

關於MD選項的相關知識可以參考’VC執行時庫(/MD、/MT等) - xingrun - 部落格園 (cnblogs.com)

 

  1. 修改MD選項,在配置,C/C++,程式碼生成,執行庫。選項中,選擇除了MD選項外的其它選項。但是需要注意,別忘記release和debug都需要修改。
  2. 直接在程式碼最上方加入#define _AFXDLL 預定義,這個我加在了使用MFC的自定義類的標頭檔案中。這個我比較推薦。
  3. 追加預定義在VC配置中,在配置,C/C++,前處理器,前處理器定義中追加_AFXDLL。這個同樣別忘記relase和debug版本都需要追加。修改的原理和第二個一樣。