Проблемы установки статической библиотеки Bullet Physics Engine - PullRequest
2 голосов
/ 30 июня 2011

эй, я только что скачал пулю 2.78 и предпринял следующие шаги:

  • разархивировал и нашел этот учебник

  • выполнил шаги точно для Cmake, за исключением того, что я обнаружил, что на изображениях в руководстве были проверены некоторые вещи, такие как УСТАНОВИТЬ ЛИБЫ, и я этого не сделал, поэтому я закончил проверку ВСЕМ возможным.

  • Зашел в недавно сгенерированный файл BULLET_PHYSICS.vcxproj и собрал его в режиме отладки и выпуска

  • У меня была куча новых библиотек в папке lib в msvn / BulletBuild / lib, но я ничего с ними не сделал

  • Следуйте остальным шагам в учебнике точно для настройки фактического проекта

  • Попытка построить последнюю строку кода: FAIL

  • Wondered Do Мне НУЖНЫ dll, потому что в папке lib были показаны только .libs и pdbs, а в руководстве не упоминалось em

Мой единственный опыт перестройки библиотек - через SFML, создавая его файлы msvn, включенные в загрузку, и используя полученные динамические файлы lib и dll. Однако инструкции в руководстве очень разные. (Если бы кто-то мог объяснить мне, как это работает, это было бы ВЕЛИКО)

Я точно следовал инструкциям несколько раз, но я не уверен, что мне не хватает. Сборка работает, если я закомментирую строку кода в main, но оставлю include, но когда я сохраню его, я получу следующее:

    1>BulletTestApp.obj : error LNK2001: unresolved external symbol "void * __cdecl btAlignedAllocInternal(unsigned int,int)" (?btAlignedAllocInternal@@YAPAXIH@Z)
    1>BulletTestApp.obj : error LNK2001: unresolved external symbol "void __cdecl btAlignedFreeInternal(void *)" (?btAlignedFreeInternal@@YAXPAX@Z)
    1>BulletTestApp.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall btConvexInternalShape::getAabbSlow(class btTransform const &,class btVector3 &,class btVector3 &)const " (?getAabbSlow@btConvexInternalShape@@UBEXABVbtTransform@@AAVbtVector3@@1@Z)
    1>BulletTestApp.obj : error LNK2001: unresolved external symbol "public: virtual char const * __thiscall btCollisionShape::serialize(void *,class btSerializer *)const " (?serialize@btCollisionShape@@UBEPBDPAXPAVbtSerializer@@@Z)
    1>BulletTestApp.obj : error LNK2001: unresolved external symbol "public: __thiscall btPolyhedralConvexShape::btPolyhedralConvexShape(void)" (??0btPolyhedralConvexShape@@QAE@XZ)
    1>BulletTestApp.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall btPolyhedralConvexShape::~btPolyhedralConvexShape(void)" (??1btPolyhedralConvexShape@@UAE@XZ)
    1>BulletTestApp.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall btConvexInternalShape::setLocalScaling(class btVector3 const &)" (?setLocalScaling@btConvexInternalShape@@UAEXABVbtVector3@@@Z)
    1>BulletTestApp.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall btCollisionShape::getBoundingSphere(class btVector3 &,float &)const " (?getBoundingSphere@btCollisionShape@@UBEXAAVbtVector3@@AAM@Z)
    1>BulletTestApp.obj : error LNK2001: unresolved external symbol "public: virtual float __thiscall btCollisionShape::getAngularMotionDisc(void)const " (?getAngularMotionDisc@btCollisionShape@@UBEMXZ)
    1>BulletTestApp.obj : error LNK2001: unresolved external symbol "public: virtual float __thiscall btCollisionShape::getContactBreakingThreshold(float)const " (?getContactBreakingThreshold@btCollisionShape@@UBEMM@Z)
    1>BulletTestApp.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall btCollisionShape::serializeSingleShape(class btSerializer *)const " (?serializeSingleShape@btCollisionShape@@UBEXPAVbtSerializer@@@Z)
    1>BulletTestApp.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall btBoxShape::getAabb(class btTransform const &,class btVector3 &,class btVector3 &)const " (?getAabb@btBoxShape@@UBEXABVbtTransform@@AAVbtVector3@@1@Z)
    1>BulletTestApp.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall btBoxShape::calculateLocalInertia(float,class btVector3 &)const " (?calculateLocalInertia@btBoxShape@@UBEXMAAVbtVector3@@@Z)
    1>BulletTestApp.obj : error LNK2001: unresolved external symbol "public: virtual bool __thiscall btPolyhedralConvexShape::initializePolyhedralFeatures(void)" (?initializePolyhedralFeatures@btPolyhedralConvexShape@@UAE_NXZ)
    1>C:\Libraries and Headers\Bullet\bullet-2.78\msvc\BulletTestApp\Release\BulletTestApp.exe : fatal error LNK1120: 14 unresolved externals

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

1 Ответ

4 голосов
/ 30 июня 2011

Хорошо, очевидно, щелкнув правой кнопкой мыши по моему проекту TestBulletApp и выбрав «Зависимости проекта», я ошибся. msVS ++ 2010 почему-то оставил эту опцию, хотя она
не работает, чтобы сделать это таким образом .

Вместо этого, чтобы сделать проект зависимым от других проектов в решении, вы должны щелкнуть правой кнопкой мыши по вашему проекту, например, «TestBulletApp», и перейти к Свойства-> Общие свойства-> Каркас и ссылки-> Добавьте новую ссылку " и добавьте зависимые проекты статической библиотеки, уже добавленные в решение, такие как 'bulletCollision' или что-либо еще; также проверьте, что" Зависимости библиотеки ссылок "имеют значение True с правой стороны.

Так что да, спасибо, ребята, хедз-ап ..... 'кашель' 'кашель' =)

...