Ошибка lnk2001 в VS пытается использовать библиотеку физики Bullet - PullRequest
0 голосов
/ 27 апреля 2020

Я новичок в C ++, Visual Studio (2019) и Bullet (2.89). Я пытался собрать Hello_World. cpp из Bullet в течение последних нескольких дней, но я застрял на этих 5 ошибках компоновки:

1>Hello_World.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall btCollisionShape::getBoundingSphere(class btVector3 &,float &)const " (?getBoundingSphere@btCollisionShape@@UBEXAAVbtVector3@@AAM@Z)
1>Hello_World.obj : error LNK2001: unresolved external symbol "public: virtual float __thiscall btCollisionShape::getAngularMotionDisc(void)const " (?getAngularMotionDisc@btCollisionShape@@UBEMXZ)
1>Hello_World.obj : error LNK2001: unresolved external symbol "public: virtual float __thiscall btCollisionShape::getContactBreakingThreshold(float)const " (?getContactBreakingThreshold@btCollisionShape@@UBEMM@Z)
1>Hello_World.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall btConvexShape::project(class btTransform const &,class btVector3 const &,float &,float &,class btVector3 &,class btVector3 &)const " (?project@btConvexShape@@UBEXABVbtTransform@@ABVbtVector3@@AAM2AAV3@3@Z)
1>Hello_World.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall btSphereShape::calculateLocalInertia(float,class btVector3 &)const " (?calculateLocalInertia@btSphereShape@@UBEXMAAVbtVector3@@@Z)

Есть другие люди, которые имели это или подобное проблема, но не получил ответа, или у меня не получилось.

setup:

  • Я использовал premake для настройки VS-решения, Bullet организован в stati c Libraries (как проекты с исходным кодом, который компилируется в файлы lib), и я сейчас пытаюсь связать их с приложением-проектом.
  • все проекты используют stati c linking (для отладки).
  • Я ссылался на все проекты маркеров в моем проекте.
  • Я даже статически связывался с файлами lib из bullet (и компоновщик может видеть эти файлы, я даже пытался указать абсолютный путь)
  • Насколько я могу судить, функции существуют и имеют одинаковую подпись в файлах. cpp и .h

Если вам нужно больше подробностей, сообщите мне.

(Возможно, у меня есть одна возможность отличается bt_double_precision? Но это может быть не так, и единственное, что я смог найти, это модель с плавающей запятой, использующая различную точность. Но сделать то же самое ничего не сделало)

Заранее спасибо!

РЕДАКТИРОВАТЬ: Я не думаю, что этот ответ относится ко мне

Что такое неопределенная ссылка / неразрешенная внешняя ошибка символа и как ее исправить?

РЕДАКТИРОВАТЬ: Возможно, стоит упомянуть: файловая структура проекта действительно странно (продиктовано premake):

  • файлы решения и проекта находятся в: bullet3-2.89 \ build3 \ vs2010
  • файлы заголовков высокого уровня (это те, которые используются Hello_World и включают Hello другие заголовки): bullet3-2.89 \ sr c
  • исходные файлы и заголовочные файлы являются подкаталогами библиотек bullet3-2.89 \ sr c
  • : bullet3-2.89 \ bin, но используются все заголовки правильные относительные пути в их include, и я установил каталоги include и library проекта в эти места

1 Ответ

0 голосов
/ 28 апреля 2020

Я нашел обходной путь. Просто собираюсь угнать один из примеров проектов из Bullet и использовать его вместо этого. Похоже, они лучше в настройках VS, чем я: D В любом случае, спасибо за ваши предложения.

...