查看: 2355|回复: 13

求助:请大家帮忙看看我所搭建的osgBullet环境为何总是出错呢?

[复制链接]

该用户从未签到

发表于 2013-8-29 00:08:34 | 显示全部楼层 |阅读模式
我顺利编译好了bullet、osgworks、osgbullet,然后打算用osgbullet做一个汽车在崎岖山地行驶的场景,可是搭建环境的过程中遇到了难题,把完好可行的osgBullet代码放进自己搭建好的环境却怎么也不能运行出正确的结果来,总是出现类似于下图的提示。我的平台搭建过程参照Example BasicDemo的例子,具体内容详细写在下面了,请大家帮我看看什么地方出错了吧,不尽感激!
未标题-1.jpg

具体过程是这样的:

在“环境变量-用户变量-PATH”添加路径:
D:\Program Files\OSG\osgBullet\bin;

在“属性—配置属性—VC++目录—包含目录”中添加:
D:\Program Files\OSG\src;
D:\Program Files\OSG\bin;
D:\Program Files\OSG\osgBullet\bin;
D:\Program Files\OSG\osgWorks\bin;
D:/Program Files/OSG/include;
D:/Program Files/OSG/osgBullet/include;
D:/Program Files/OSG/osgWorks/include;
D:/Program Files/OSG/bullet/src;

在“属性—配置属性—VC++目录—库目录”中添加:
D:\Program Files\OSG\lib;
D:\Program Files\OSG\bullet\lib\Release;
D:\Program Files\OSG\bullet\lib\Debug;
D:\Program Files\OSG\osgWorks\lib;
D:\Program Files\OSG\osgBullet\lib;

参考Example BasicDemo的附加依赖项,在自己的工程里附加依赖项添加如下内容:
OpenThreadsd.lib
osgd.lib
osgAnimationd.lib
osgDBd.lib
osgFXd.lib
osgGAd.lib
osgManipulatord.lib
osgPresentationd.lib
osgShadowd.lib
osgSimd.lib
osgTerraind.lib
osgVolumed.lib
osgUtild.lib
osgViewerd.lib
osgTextd.lib
osgParticled.lib
osgWidgetd.lib
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
D:\Program Files\OSG\osgBullet\lib\osgbDynamicsd.lib
D:\Program Files\OSG\osgBullet\lib\osgbCollisiond.lib
D:\Program Files\OSG\osgWorks\lib\osgwControlsd.lib
D:\Program Files\OSG\osgWorks\lib\osgwQueryd.lib
D:\Program Files\OSG\osgWorks\lib\osgwToolsd.lib
D:\Program Files\OSG\lib\OpenThreadsd.lib
D:\Program Files\OSG\lib\osgd.lib
D:\Program Files\OSG\lib\osgDBd.lib
D:\Program Files\OSG\lib\osgUtild.lib
D:\Program Files\OSG\lib\osgGAd.lib
D:\Program Files\OSG\lib\osgTextd.lib
D:\Program Files\OSG\lib\osgViewerd.lib
D:\Program Files\OSG\lib\osgShadowd.lib
D:\Program Files\OSG\bullet\lib\Debug\BulletDynamics_Debug.lib
D:\Program Files\OSG\bullet\lib\Debug\BulletCollision_Debug.lib
D:\Program Files\OSG\bullet\lib\Debug\LinearMath_Debug.lib
D:\Program Files\OSG\bullet\lib\Debug\BulletSoftBody_Debug.lib

用来测试搭建环境是否可行的代码是“Bullet教程: Hello World 实例”(http://blog.csdn.net/lxdfigo/article/details/8279783)中的源代码,这段源代码被我放在Example BasicDemo下执行过是可用的,可是放在我的环境下不可用。源码如下:
  1. #include <iostream>  

  2. #include <btBulletDynamicsCommon.h>  

  3. int main (void)  
  4. {  

  5.         btVector3 worldAabbMin(-10000,-10000,-10000);  
  6.         btVector3 worldAabbMax(10000,10000,10000);  
  7.         int maxProxies = 1024;  
  8.         btAxisSweep3* broadphase = new btAxisSweep3(worldAabbMin,worldAabbMax,maxProxies);  

  9.         btDefaultCollisionConfiguration* collisionConfiguration = new btDefaultCollisionConfiguration();  
  10.         btCollisionDispatcher* dispatcher = new btCollisionDispatcher(collisionConfiguration);  

  11.         btSequentialImpulseConstraintSolver* solver = new btSequentialImpulseConstraintSolver;  

  12.         btDiscreteDynamicsWorld* dynamicsWorld = new btDiscreteDynamicsWorld(dispatcher,broadphase,solver,collisionConfiguration);  

  13.         dynamicsWorld->setGravity(btVector3(0,-10,0));  

  14.         btCollisionShape* groundShape = new btStaticPlaneShape(btVector3(0,1,0),1);  

  15.         btCollisionShape* fallShape = new btSphereShape(1);  

  16.         btDefaultMotionState* groundMotionState = new btDefaultMotionState(btTransform(btQuaternion(0,0,0,1),btVector3(0,-1,0)));  
  17.         btRigidBody::btRigidBodyConstructionInfo  
  18.                 groundRigidBodyCI(0,groundMotionState,groundShape,btVector3(0,0,0));  
  19.         btRigidBody* groundRigidBody = new btRigidBody(groundRigidBodyCI);  
  20.         dynamicsWorld->addRigidBody(groundRigidBody);  

  21.         btDefaultMotionState* fallMotionState =  
  22.                 new btDefaultMotionState(btTransform(btQuaternion(0,0,0,1),btVector3(0,50,0)));  
  23.         btScalar mass = 1;  
  24.         btVector3 fallInertia(0,0,0);  
  25.         fallShape->calculateLocalInertia(mass,fallInertia);  
  26.         btRigidBody::btRigidBodyConstructionInfo fallRigidBodyCI(mass,fallMotionState,fallShape,fallInertia);  
  27.         btRigidBody* fallRigidBody = new btRigidBody(fallRigidBodyCI);  
  28.         dynamicsWorld->addRigidBody(fallRigidBody);  

  29.         for (int i=0 ; i<300 ; i++) {  
  30.                 dynamicsWorld->stepSimulation(1/60.f,10);  

  31.                 btTransform trans;  
  32.                 fallRigidBody->getMotionState()->getWorldTransform(trans);  

  33.                 std::cout << "sphere height: " << trans.getOrigin().getY() << std::endl;  
  34.         }  

  35.         dynamicsWorld->removeRigidBody(fallRigidBody);  
  36.         delete fallRigidBody->getMotionState();  
  37.         delete fallRigidBody;  

  38.         dynamicsWorld->removeRigidBody(groundRigidBody);  
  39.         delete groundRigidBody->getMotionState();  
  40.         delete groundRigidBody;  

  41.         delete fallShape;  

  42.         delete groundShape;  

  43.         delete dynamicsWorld;  
  44.         delete solver;  
  45.         delete collisionConfiguration;  
  46.         delete dispatcher;  
  47.         delete broadphase;  

  48.         return 0;  
  49. }  
复制代码

该用户从未签到

发表于 2013-8-29 13:54:03 | 显示全部楼层
检查您的工程配置还有Bullet的版本是否可用吧,外部符号无法解析只有一种解释就是函数被使用了但是编译器无法找到它是在什么地方实现的

该用户从未签到

 楼主| 发表于 2013-8-29 19:59:51 | 显示全部楼层
array 发表于 2013-8-29 13:54
检查您的工程配置还有Bullet的版本是否可用吧,外部符号无法解析只有一种解释就是函数被使用了但是编译器无 ...

可我的Demo是可用的是否证明我的Bullet的版本一定可用呢?

该用户从未签到

发表于 2013-9-9 21:34:37 | 显示全部楼层
我也出现了这个问题 同求

该用户从未签到

 楼主| 发表于 2013-9-11 10:58:19 | 显示全部楼层
小发 发表于 2013-9-9 21:34
我也出现了这个问题 同求

没办法,我复制一个Demo然后修改着用了

该用户从未签到

发表于 2013-9-11 22:56:40 | 显示全部楼层
那也得把包含路径、库、依赖项加进去的吧?LNK2001的error好像都是依赖项的.lib没填

该用户从未签到

发表于 2013-9-11 22:57:17 | 显示全部楼层
天行剑 发表于 2013-9-11 10:58
没办法,我复制一个Demo然后修改着用了

请问学物理引擎有什么学习资料没?

该用户从未签到

 楼主| 发表于 2013-9-11 23:28:33 | 显示全部楼层
小发 发表于 2013-9-11 22:57
请问学物理引擎有什么学习资料没?

把这些都添加进去就行了 没发现什么资料 完全自己看demo瞎摸索啊 论坛里大神们说很容易 可是我觉得很难弄唉

该用户从未签到

发表于 2013-9-12 12:49:08 | 显示全部楼层
不是有电子文档么?

该用户从未签到

 楼主| 发表于 2013-9-12 21:41:41 | 显示全部楼层
liuzhiyu123 发表于 2013-9-12 12:49
不是有电子文档么?

电子文档?在哪里下载呢?

该用户从未签到

发表于 2013-9-12 21:47:01 | 显示全部楼层
同求

该用户从未签到

发表于 2013-9-13 10:44:23 | 显示全部楼层
中文文档 也有人翻译  英文的不是在src中就有么,要是做深入的研究 还是先打好数学基础吧,要是做简单的应用,看Demo就够了

该用户从未签到

发表于 2017-2-13 14:49:06 | 显示全部楼层
请问楼主这个问题解决了吗?我在运行BasicDemo时也是出现“无法解析的外部符号”这种错误,附加依赖项使用原来的属性,或者按照您给出的添加都还是这种错误。

该用户从未签到

发表于 2017-2-28 21:35:42 | 显示全部楼层
滋滋 发表于 2017-2-13 14:49
请问楼主这个问题解决了吗?我在运行BasicDemo时也是出现“无法解析的外部符号”这种错误,附加依赖项使用 ...

bullet版本换成2.78,问题解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表