【问题标题】:Win32 Project Generating MFC errorWin32 项目生成 MFC 错误
【发布时间】:2013-09-12 14:15:32
【问题描述】:

我正在 Visual Studio 2010 中处理 Win32 项目。它正在生成 MFC 错误,错误如下所示

错误 C1189:#error:使用 /MD[d](CRT dll 版本)构建 MFC 应用程序需要 MFC 共享 dll 版本。请#define _AFXDLL 或不要使用/MD[d]

IntelliSense:#error 指令:已包含 WINDOWS.H。 MFC 应用不得#include

我的问题是为什么WIN32项目会产生MFC错误,我应该如何消除这个错误,请指导我

【问题讨论】:

  • 项目的一个通用属性页确保在“使用 MFC”字段中显示“使用标准 Windows 库”。否则,显示您包含的标题。
  • 我已经这样做了..但我的问题仍然存在

标签: c++ visual-studio-2010 visual-studio visual-c++ mfc


【解决方案1】:

问题是您包含的标题之一包含“afx.h”。 header 所做的第一件事是检查 _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++ -> Advanced 下切换 Show Includes 以查看 afx.h 的位置被包括在内。

【讨论】:

  • 是的,直到您弄清楚包含 afx.h 的内容,您才会收到该错误。您是否尝试过查看“显示包含”列表?
  • afxwin.h 被包括在内,我已经排除了它,第二个错误已被删除但第一个错误仍然存​​在
  • 使用相同的技术来解决这个问题。使用 Agent Ransack 之类的程序查看 MFC 源代码,您会看到错误是由包含 afxv_w32.h 生成的。
【解决方案2】:

你可以试试这个:

改变

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

作为

多线程 DLL (/MD)

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 2016-08-26
    • 2012-05-28
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    相关资源
    最近更新 更多