使用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版本都需要追加。修改的原理和第二個一樣。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM