Использование #define NDEBUG дает мне ошибки в C ++ - PullRequest
0 голосов
/ 30 мая 2011

Если я определяю NDEBUG в верхней части моего main.cpp, я получаю все эти ошибки:

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 libs.

Ответы [ 2 ]

1 голос
/ 30 мая 2011

Скорее всего, это происходит из-за несоответствия между включенными заголовками (которые будут выпускной версией, если вы определите NDEBUG) и связанными библиотеками, которые кажутся отладочными версиями. Возможно, некоторые заголовки используют функции автоматической компоновки, и поэтому вы получаете ссылки на разные версии библиотеки.

0 голосов
/ 30 мая 2011

Это потому, что MSVC уже определяет NDEBUG для вас в сборке выпуска.Вы не должны #define _DEBUG или #define NDEBUG самостоятельно, используйте предварительно предоставленные #define s.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...