Ошибка OGRE LNK2001: неразрешенный внешний символ

Я пытаюсь получить пример OGRE для компиляции в VS 2013, но я продолжаю получать ту же ошибку, независимо от того, что я делаю:

error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)"

OGRE SDK поставляется с буст-библиотекой. К сожалению, он не совместим с VS2013, поэтому я скачал последнюю версию, скомпилированную с использованием VS2013. Вы можете найти это здесь

"Дополнительные каталоги включения" и "дополнительные каталоги библиотеки" настроены правильно.

1 ответ

Решение

Состояние ошибки, что вы используете символ, который объявлен, но не реализован, boost::system::error_category это метод boost, который различные библиотеки используют при управлении ошибками, он принадлежит системной библиотеке, реализация этого метода находится в [BOOST_ROOT] \ boost \ libs \ system \ src \ error_code.cpp.

Наиболее вероятной причиной является то, что вы включаете библиотеку OGRE или часть библиотеки, в которую входят некоторые библиотеки boost, использующие этот метод.

Многие библиотеки из boost являются только заголовочными, но этой конкретной библиотечной системы нет, она требует компиляции этого .cpp: два возможных исправления компилируют .LIB или.DLL из boost (подробнее см. Раздел Подготовка к использованию двоичного двоичного файла библиотеки Boost). информация об этом) и использование этого в вашем проекте (может быть лучше, если вы будете использовать много библиотек из boost, которые не являются только заголовками) или самое простое исправление: включая error_code.cpp файл в вашем проекте и компиляции снова.

Другие вопросы по тегам