使用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