Win32项目生成时出现MFC错误。

6
我正在使用Visual Studio 2010在Win32项目上工作,它生成了一个MFC错误,该错误如下所示:
error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
IntelliSense: #error directive: WINDOWS.H already included. MFC apps must not #include
我的问题是为什么Win32项目会生成MFC错误,以及应该如何消除这个错误,请指导。

在项目的一般属性页面上,请确保“MFC 的使用”字段中显示为“使用标准 Windows 库”。否则,请显示您正在包含的头文件。 - Retired Ninja
我已经做了那个.. 但我的问题仍然存在。 - WiXXeY
2个回答

7
问题在于你所包含的头文件中包括了'afx.h'。而该头文件的第一件事情是检查是否定义了_DLL,如果有,它会查找_AFXDLL,如果未定义它将显示此错误消息。下面是从afx.h中提取的相关部分。
#ifdef _DLL
#ifndef _AFXDLL
#error Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
#endif
#endif

如果您不想包含MFC,请进入项目属性,在C/C++ -> 高级下,将显示包含文件切换为ON以查看afx.h的包含位置。

是的,直到你找出包含afx.h的内容,你才能解决那个错误。你尝试过查看“显示包含文件”列表吗? - snowdude
afxwin.h已被包含,我已将其排除,第二个错误已被解决,但第一个错误仍然存在。 - WiXXeY
使用相同的技巧来修复它。使用类似Agent Ransack的程序来查看MFC源代码,你会发现错误是由包含afxv_w32.h引起的。 - snowdude

4

您可以尝试以下方法:

修改

项目属性 -> 配置属性 -> C/C++ -> 代码生成 -> 运行时库

多线程 DLL (/MD)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接