- 原来的项目需要追加一个截图的功能。我将其封装成一个类,但是在添加到项目时爆出了以下错误。
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)
- 修改MD选项,在配置,C/C++,代码生成,运行库。选项中,选择除了MD选项外的其它选项。但是需要注意,别忘记release和debug都需要修改。
- 直接在代码最上方加入#define _AFXDLL 预定义,这个我加在了使用MFC的自定义类的头文件中。这个我比较推荐。
- 追加预定义在VC配置中,在配置,C/C++,预处理器,预处理器定义中追加_AFXDLL。这个同样别忘记relase和debug版本都需要追加。修改的原理和第二个一样。