开发者

Using #define NDEBUG give me errors in C++

开发者 https://www.devze.com 2023-03-09 01:17 出处:网络
If I define NDEBUG in the top of my main.cpp I get all this errors: 1>All outputs 开发者_开发知识库are up-to-date.

If I define NDEBUG in the top of my main.cpp I get all this errors:

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

I'm using MS Visual Studio 2010, boost and gosu libs.


This most likely occurs due to a mismatch between included headers (which will be release version if you define NDEBUG) and linked libraries, which appear to be debug-versions. Maybe some of the headers rely on auto-linking features, and thus you get different versions of a library linked.


This is because MSVC already defines NDEBUG for you in Release build. You shouldn't #define _DEBUG or #define NDEBUG yourself, use the pre-provided #defines.

0

精彩评论

暂无评论...
验证码 换一张
取 消