Bullet Physics Engine静态库安装问题

Bullet Physics Engine static library installation issues

本文关键字:安装 问题 静态 Physics Engine Bullet      更新时间:2023-10-16

嘿,所以我刚刚下载了子弹头2.78,并采取了以下步骤:

  • 解压缩并找到这个教程

  • 完全按照Cmake的步骤进行,只是我发现教程中的图片已经检查了一些东西,比如INSTALL LIBS,而我没有,所以我最终检查了所有可能的东西。

  • 进入新生成的BULLET_PHYSICS.vcxproj,并在调试和发布的情况下构建它

  • 看到我在msvn/BulletBuild/lib的lib文件夹中有一堆新的lib,但对它们没有做任何

  • 完全按照教程中的其余步骤设置实际项目

  • 尝试构建最后一行代码:FAIL

  • 想知道我需要dll,因为lib文件夹中只显示了.lbs和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 HeadersBulletbullet-2.78msvcBulletTestAppReleaseBulletTestApp.exe : fatal error LNK1120: 14 unresolved externals

我知道某个地方有链接问题,但我完全按照说明进行了操作,所以我不知道如何修复它。如果不是这样的话,在查看添加项目的属性时,我看不到任何额外的依赖项…但我想我一开始就不理解这种使用库的方法,所以这些知识会有所帮助

好吧,很明显,右键单击我的TestBulletApp项目并单击"项目依赖项"是我出错的地方。msVS++2010出于某种原因保留了该选项,尽管它
那样做是行不通的。

相反,要使项目依赖于解决方案中的其他项目,您必须右键单击您的项目,如我的"TestBulletApp",然后转到Properties->Common Properties->Framework and References->Add New Reference">并添加已添加到解决方案中依赖的静态库项目,如"bulletCollision"或其他项目;还要检查"Library Dependencies"在右侧为True。

所以,是的,谢谢你们的提醒……"咳嗽=(