Windows - VC ++ - 无法在静态构建中使用“_ASSERTE”

时间:2011-02-18 07:57:33

标签: c++ windows visual-studio-2008 winapi visual-c++

我正在尝试在visual studio-2008中以静态模式(使用/ MT)编译vc ++代码。但是我收到以下错误。

error Please use the /MD switch for _AFXDLL builds

我差点尝试各种选择。错误是由宏“_ASSERTE”引起的。但是,我不能删除我的超级纵坐标所说的那些宏。任何帮助都会得到很多感谢

2 个答案:

答案 0 :(得分:4)

错误告诉你程序出现了问题。虽然_ASSERTE可能是最直接的原因,但这里有一个更深层次的基础问题需要解决。

您的构建脚本或源代码是#define-ing _AFXDLL,它告诉MFC您计划使用MFC的DLL版本。这也要求您使用CRT的DLL版本。但/ MT开关引入了CRT的静态版本。

我强烈推荐的解决方案是使用/ MD开关来使用CRT DLL以及MFC DLL。你没有解释为什么要尝试使用/ MT,但这样做很少是正确的选择。

或者,如果您致力于/ MT路由,则不应定义_AFXDLL。

最后,您根本没有打算使用MFC的可能性很小。在这种情况下,请停止包含MFC标头(afx * .h),错误将消失。

马丁

答案 1 :(得分:0)

您必须创建自己的_ASSERTE版本,该版本不会调用_CrtDbgReportW,而是调用您自己的报告功能。问题是在宏中使用_CrtDbgReportW而没有别的。