【发布时间】:2021-08-28 23:42:54
【问题描述】:
我正在 Visual Studio 2011 中处理 Win32 项目。当我包含 afx.h 或 afxwin.h 时,它会生成 MFC 错误。 为了解决这个问题,我在项目属性选项卡中进行了以下更改: 1)MFC的使用:在共享DLL中使用MFC 2) C++ -> 代码生成 -> 运行库 -> 多线程调试DLL(/MDd)
当我构建解决方案时它仍然给我以下错误:
1>C:\Program Files (x86)\Microsoft Visual Studio 11.0\vc\atlmfc\include\afx.h(24): fatal 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]
我的问题是为什么 Win32 项目会产生 MFC 错误,我应该如何消除这个错误。请指导我。
【问题讨论】:
-
你为什么不照它说的去做并#define _AFXDLL? C/C++、预处理器、预处理器定义设置。
-
查看构建日志文件 - 确保在为编译发出的命令行中有
/D _AFXDLL。 “在共享 DLL 中使用 MFC”应该会导致这种情况发生。也许清理/重建可能会有所帮助?另外,VC++11 是 Visual Studio 2012。 -
感谢汉斯·帕桑特。我在预处理器定义中添加了 _AFXDLL。但它仍然给出同样的错误。
-
项目类型是什么? (dll?静态库?exe?)
-
检查 Michael 所说的:在构建日志中,是否有 _AFXDLL?不要手动定义,设置“在共享DLL中使用MFC”时添加。如果它设置在那里,这听起来像是一个陈旧的预处理标题。手动删除所有不是源文件、项目文件或资源的内容并重新构建。
标签: visual-c++ dll mfc