如何通过正确的库将子弹放到我的Ogre项目中?

时间:2019-05-04 19:33:03

标签: c++ visual-studio cmake ogre bullet

我正在尝试将bullet(3D物理模拟)集成到我的ogre(3D渲染)项目中,但是我什至无法进行编程,因为我遇到了与没有合适的库有关的错误。我认为我做的不对。

首先,我对编程还不陌生,但是我怀疑我的问题不是代码,而是具有正确的库或文件管理。如果您需要更多信息来帮助您,请问这是我的第一篇文章。 我有一个可以正常使用的食人魔解决方案(Visual Studio 2017)。

项目符号文件来自此GitHub存储库。 https://github.com/bulletphysics/bullet3

我从src文件夹中获取了源文件(.h和.cpp),并将它们与我的食人魔放在一起。有2个.h文件,其中包括其余部分的包含,因此我将它们添加到VS中的解决方案中,并#include将它们添加到我的应用程序标头中。

经过一番困惑和一些研究,我发现我必须先制造子弹。它被设计为使用Cmake构建,因此我将其运行并在VS中构建。现在有一个lib文件夹,但它仅包含带有一些debug.libs的调试文件夹。 Cmake可以选择在配置之后和生成之前安装库,但是如果创建了某些东西,我将找不到它。

我已经输入了一些代码,可以从在线教程中创建物理世界,但是存在链接器错误。具体来说...

LNK2019不可解析的外部符号“公共:__Defvoid Physical:Instant __Cdecl O ”(?initPhysics @ Ogre3DApplication @@ QEAAXXZ)

LNK1120 1个未解决的外部组件1

我希望我已经正确完成了该堆栈溢出的操作,希望能得到一些帮助,因为我已经坚持了很长时间并且我自己没有进步,所以我认为我需要帮助。我知道我需要可以以某种方式使用已构建的项目符号项目,但我不确定如何将其放入,我认为这种情况非常特定。

带有ogre源文件的项目符号源:

https://imgur.com/YEhDyiO

我在VS中的#include和解决方案管理:

https://imgur.com/V3osfYb

Cmake和内置的项目符号文件夹(我在Cmake中突出显示了install libs选项):

https://imgur.com/vhY4uW1

我的项目符号测试代码和我遇到的错误:

https://imgur.com/Kqijobp

我的代码:

在Ogre3DApplication.h中设置项目符号变量


    btBroadphaseInterface*                  _broadphase; 
    btDefaultCollisionConfiguration*        _collisionConfiguration;
    btCollisionDispatcher*                  _dispatcher;
    btSequentialImpulseConstraintSolver*    _solver;
    btDiscreteDynamicsWorld*                _world;
    void initPhysics();
我的Ogre3DApplication.cpp中的initPhysics函数专门导致错误。其余的注释掉了,但是会产生更多相同的错误。

void Ogre3DApplication::initPhysics()
{

    //1

    _broadphase = new btDbvtBroadphase();

    //2
    //_collisionConfiguration = new btDefaultCollisionConfiguration();
    //_dispatcher = new btCollisionDispatcher(_collisionConfiguration);

    //3
    //_solver = new btSequentialImpulseConstraintSolver();

    //4
    //_world = new btDiscreteDynamicsWorld(_dispatcher, _broadphase, _solver, _collisionConfiguration);

    //5
    //_world->setGravity(btVector3(0, -9.8, 0));
}

0 个答案:

没有答案