Компиляция в VS2013: ошибка LNK2001 с использованием C ++

Я пытаюсь скомпилировать свою игру с помощью Visual Studio 2013. Игра использует Box2D, но при компиляции в режиме Release выпуск Box2D.lib выдает ошибки. Он отлично работает при компиляции в режиме отладки с отладкой Box2D.lib.

Я получаю 135 ошибок, и в основном это примерно три:

1>Box2D.lib(b2CollideEdge.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4
1>MyContactListener.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) char const * __cdecl std::_Winerror_map(int)"
(__imp_?_Winerror_map@std@@YAPBDH@Z)
1>Box2D.lib(b2ContactManager.obj) : error LNK2001: unresolved external symbol _atexit

Я уже несколько раз собирал Box2D.lib и уверен, что подключаюсь к нужным библиотекам выпуска и отладки.

Я попытался отключить флаг компилятора / GS (Проверка безопасности буфера), но это не помогло.

Для сборки Box2D.lib и при компиляции игры я использую флаг Многопоточная DLL (/ MD) для библиотеки времени выполнения.

РЕДАКТИРОВАТЬ: Я избавился от ошибок «@__ security_check_cookie @ 4» при подключении к библиотеке «bufferoverflowU.lib». Тем не менее, 133 ошибки остаются.


person lefti    schedule 02.12.2014    source источник
comment
Используемая вами библиотека Box2D могла быть скомпилирована с более старой версией Visual Studio.   -  person Captain Obvlious    schedule 02.12.2014
comment
@Captain Obvlious: я уверен, что библиотека Box2D скомпилирована с той же версией VS, в которой я компилирую игру. На самом деле, в последний раз я скомпилировал библиотеку 20 минут назад.   -  person lefti    schedule 02.12.2014
comment
Это все символы библиотеки времени выполнения C, специфичные для версии Microsoft. Как вам удалось избежать линковки, догадаться невозможно. Покажите используемые вами параметры компоновщика.   -  person Hans Passant    schedule 02.12.2014
comment
@Hans Passant: мне просто скопировать и вставить параметры из свойств - ›Linker -› Командная строка?   -  person lefti    schedule 02.12.2014


Ответы (1)


Вероятно, вы отключили связывание библиотек времени выполнения по умолчанию в параметрах компоновщика. Щелкните проект правой кнопкой мыши и перейдите в свойства. В Linker-> Input установите для параметра Ignore All Default Libraries значение No.

person Marian Spanik    schedule 02.12.2014