首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用#define NDEBUG在C++中给我错误

使用#define NDEBUG在C++中给我错误
EN

Stack Overflow用户
提问于 2011-05-30 21:06:34
回答 2查看 854关注 0票数 0

如果我在我的main.cpp顶部定义了NDEBUG,我会得到所有这些错误:

代码语言:javascript
复制
1>  All outputs are up-to-date.
1>libcmt.lib(invarg.obj) : error LNK2005: __initp_misc_invarg already defined in LIBCMTD.lib(invarg.obj)
1>libcmt.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in LIBCMTD.lib(invarg.obj)
1>libcmt.lib(invarg.obj) : error LNK2005: __set_invalid_parameter_handler already defined in LIBCMTD.lib(invarg.obj)
1>libcmt.lib(invarg.obj) : error LNK2005: __get_invalid_parameter_handler already defined in LIBCMTD.lib(invarg.obj)
1>libcmt.lib(invarg.obj) : error LNK2005: "void __cdecl _invoke_watson(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invoke_watson@@YAXPBG00II@Z) already defined in LIBCMTD.lib(invarg.obj)
1>libcmt.lib(invarg.obj) : error LNK2005: __invalid_parameter already defined in LIBCMTD.lib(invarg.obj)
1>libcmt.lib(invarg.obj) : error LNK2005: "void __cdecl _invalid_parameter(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invalid_parameter@@YAXPBG00II@Z) already defined in LIBCMTD.lib(invarg.obj)
1>libcmt.lib(invarg.obj) : error LNK2005: ___pInvalidArgHandler already defined in LIBCMTD.lib(invarg.obj)
1>libcpmtd.lib(xdebug.obj) : warning LNK4098: defaultlib 'libcmt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library

我使用的是MS Visual Studio 2010,boost和gosu库。

EN

回答 2

Stack Overflow用户

发布于 2011-05-30 21:12:19

这很可能是由于包含的头文件(如果您定义NDEBUG,它将是发布版本)和链接库(看起来是调试版本)之间的不匹配造成的。也许一些头文件依赖于自动链接功能,因此您可以链接不同版本的库。

票数 1
EN

Stack Overflow用户

发布于 2011-05-30 21:08:08

这是因为MSVC已经在发布版本中为你定义了NDEBUG。您不应该自己使用#define _DEBUG#define NDEBUG,请使用预先提供的#define

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6176665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档