查看: 2298|回复: 8

为什么搭建好了osgBullet环境后添加代码运行会出现这样的错误呢?请大家指点指点吧~

[复制链接]

该用户从未签到

发表于 2013-7-12 16:09:35 | 显示全部楼层 |阅读模式
打算把Bullet物理引擎加入到所做的场景中去以模拟重力、摩擦力等对地形上运动物体的影响。现已编译好osgBullet,并能成功运行其中examples,于是新建了一个工程,先把搭建osg平台所需的include和lib路径添加进去,然后把Bullet所需的include、lib路径添加好,把已成功运行的examples里面basicdemo的源代码放进我新建的工程里面打开,一运行就出现如图所示的各种问题,这是什么原因呢?该如何解决呢?
附上我的截屏、源码和编译时的出现问题
截屏.jpg
osg疑问.zip (8.89 KB, 下载次数: 4)

该用户从未签到

发表于 2013-7-13 23:11:39 | 显示全部楼层
查查dll吧

该用户从未签到

 楼主| 发表于 2013-7-14 10:15:55 | 显示全部楼层
buptronin 发表于 2013-7-13 23:11
查查dll吧

是指包含osgWorks的含有dll文件的路径?我已经添加了,还是没有用,以下是我添加的路径:
包含目录
D:\Program Files\OSG\osgBullet\bin;
D:\Program Files\OSG\bin;
D:\Program Files\OSG\osgWorks\bin;
D:/Program Files/OSG/osgBullet/include;
D:/Program Files/OSG/include;
D:/Program Files/OSG/osgWorks/include;
D:/Program Files/OSG/bullet/src;
D:\Program Files\OSG\src;
库目录
D:\Program Files\OSG\lib;
D:\Program Files\OSG\osgBullet\lib;
D:\Program Files\OSG\osgWorks\lib;
还有链接器-输入-附加依赖项里面我添加了:
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
请问这样的配置有没有什么问题呢?

该用户从未签到

 楼主| 发表于 2013-7-14 14:08:54 | 显示全部楼层
还是有问题……
1>------ 已启动生成: 项目: osgBullet, 配置: Debug Win32 ------
1>生成启动时间为 2013/7/14 12:51:43。
1>InitializeBuildStatus:
1>  正在对“Debug\osgBullet.unsuccessfulbuild”执行 Touch 任务。
1>ClCompile:
1>  所有输出均为最新。
1>ManifestResourceCompile:
1>  所有输出均为最新。
1>main.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall btRigidBody::btRigidBody(struct btRigidBody::btRigidBodyConstructionInfo const &)" (??0btRigidBody@@QAE@ABUbtRigidBodyConstructionInfo@0@@Z),该符号在函数 "class btRigidBody * __cdecl createBTBox(class osg::MatrixTransform *,class osg::Vec3f)" (?createBTBox@@YAPAVbtRigidBody@@PAVMatrixTransform@osg@@VVec3f@3@@Z) 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall osgbDynamics::MotionState::setParentTransform(class osg::Matrixd)" (__imp_?setParentTransform@MotionState@osgbDynamics@@QAEXVMatrixd@osg@@@Z),该符号在函数 "class btRigidBody * __cdecl createBTBox(class osg::MatrixTransform *,class osg::Vec3f)" (?createBTBox@@YAPAVbtRigidBody@@PAVMatrixTransform@osg@@VVec3f@3@@Z) 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall osgbDynamics::MotionState::setTransform(class osg::Transform *)" (__imp_?setTransform@MotionState@osgbDynamics@@QAEXPAVTransform@osg@@@Z),该符号在函数 "class btRigidBody * __cdecl createBTBox(class osg::MatrixTransform *,class osg::Vec3f)" (?createBTBox@@YAPAVbtRigidBody@@PAVMatrixTransform@osg@@VVec3f@3@@Z) 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall osgbDynamics::MotionState::MotionState(class osg::Matrixd const &,class osg::Vec3f const &)" (__imp_??0MotionState@osgbDynamics@@QAE@ABVMatrixd@osg@@ABVVec3f@3@@Z),该符号在函数 "class btRigidBody * __cdecl createBTBox(class osg::MatrixTransform *,class osg::Vec3f)" (?createBTBox@@YAPAVbtRigidBody@@PAVMatrixTransform@osg@@VVec3f@3@@Z) 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) class btBoxShape * __cdecl osgbCollision::btBoxCollisionShapeFromOSG(class osg::Node *,class osg::BoundingBoxImpl<class osg::Vec3f> const *)" (__imp_?btBoxCollisionShapeFromOSG@osgbCollision@@YAPAVbtBoxShape@@PAVNode@osg@@PBV?$BoundingBoxImpl@VVec3f@osg@@@4@@Z),该符号在函数 "class btRigidBody * __cdecl createBTBox(class osg::MatrixTransform *,class osg::Vec3f)" (?createBTBox@@YAPAVbtRigidBody@@PAVMatrixTransform@osg@@VVec3f@3@@Z) 中被引用
1>main.obj : error LNK2001: 无法解析的外部符号 "public: virtual void __thiscall osgbDynamics::MotionState::getWorldTransform(class btTransform &)const " (?getWorldTransform@MotionState@osgbDynamics@@UBEXAAVbtTransform@@@Z)
1>main.obj : error LNK2001: 无法解析的外部符号 "public: virtual void __thiscall osgbDynamics::MotionState::setWorldTransform(class btTransform const &)" (?setWorldTransform@MotionState@osgbDynamics@@UAEXABVbtTransform@@@Z)
1>main.obj : error LNK2019: 无法解析的外部符号 "void * __cdecl btAlignedAllocInternal(unsigned int,int)" (?btAlignedAllocInternal@@YAPAXIH@Z),该符号在函数 "public: static void * __cdecl btCollisionObject:perator new(unsigned int)" (??2btCollisionObject@@SAPAXI@Z) 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "void __cdecl btAlignedFreeInternal(void *)" (?btAlignedFreeInternal@@YAXPAX@Z),该符号在函数 "public: static void __cdecl btCollisionObject::operator delete(void *)" (??3btCollisionObject@@SAXPAX@Z) 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: virtual __thiscall osgbDynamics::MotionState::~MotionState(void)" (__imp_??1MotionState@osgbDynamics@@UAE@XZ),该符号在函数 "public: virtual void * __thiscall osgbDynamics::MotionState::`scalar deleting destructor'(unsigned int)" (??_GMotionState@osgbDynamics@@UAEPAXI@Z) 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall btDiscreteDynamicsWorld::btDiscreteDynamicsWorld(class btDispatcher *,class btBroadphaseInterface *,class btConstraintSolver *,class btCollisionConfiguration *)" (??0btDiscreteDynamicsWorld@@QAE@PAVbtDispatcher@@PAVbtBroadphaseInterface@@PAVbtConstraintSolver@@PAVbtCollisionConfiguration@@@Z),该符号在函数 "class btDynamicsWorld * __cdecl initPhysics(void)" (?initPhysics@@YAPAVbtDynamicsWorld@@XZ) 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall btAxisSweep3::btAxisSweep3(class btVector3 const &,class btVector3 const &,unsigned short,class btOverlappingPairCache *,bool)" (??0btAxisSweep3@@QAE@ABVbtVector3@@0GPAVbtOverlappingPairCache@@_N@Z),该符号在函数 "class btDynamicsWorld * __cdecl initPhysics(void)" (?initPhysics@@YAPAVbtDynamicsWorld@@XZ) 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall btSequentialImpulseConstraintSolver::btSequentialImpulseConstraintSolver(void)" (??0btSequentialImpulseConstraintSolver@@QAE@XZ),该符号在函数 "class btDynamicsWorld * __cdecl initPhysics(void)" (?initPhysics@@YAPAVbtDynamicsWorld@@XZ) 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall btCollisionDispatcher::btCollisionDispatcher(class btCollisionConfiguration *)" (??0btCollisionDispatcher@@QAE@PAVbtCollisionConfiguration@@@Z),该符号在函数 "class btDynamicsWorld * __cdecl initPhysics(void)" (?initPhysics@@YAPAVbtDynamicsWorld@@XZ) 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall btDefaultCollisionConfiguration::btDefaultCollisionConfiguration(struct btDefaultCollisionConstructionInfo const &)" (??0btDefaultCollisionConfiguration@@QAE@ABUbtDefaultCollisionConstructionInfo@@@Z),该符号在函数 "class btDynamicsWorld * __cdecl initPhysics(void)" (?initPhysics@@YAPAVbtDynamicsWorld@@XZ) 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) class osg::Node * __cdecl osgbCollision::osgNodeFromBtCollisionShape(class btCollisionShape const *,class btTransform const &)" (__imp_?osgNodeFromBtCollisionShape@osgbCollision@@YAPAVNode@osg@@PBVbtCollisionShape@@ABVbtTransform@@@Z),该符号在函数 "class osg::MatrixTransform * __cdecl createModel(class btDynamicsWorld *)" (?createModel@@YAPAVMatrixTransform@osg@@PAVbtDynamicsWorld@@@Z) 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) class btConvexTriangleMeshShape * __cdecl osgbCollision::btConvexTriMeshCollisionShapeFromOSG(class osg::Node *)" (__imp_?btConvexTriMeshCollisionShapeFromOSG@osgbCollision@@YAPAVbtConvexTriangleMeshShape@@PAVNode@osg@@@Z),该符号在函数 "class osg::MatrixTransform * __cdecl createModel(class btDynamicsWorld *)" (?createModel@@YAPAVMatrixTransform@osg@@PAVbtDynamicsWorld@@@Z) 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall osgbDynamics::RigidBodyAnimation::RigidBodyAnimation(void)" (__imp_??0RigidBodyAnimation@osgbDynamics@@QAE@XZ),该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall btCollisionObject::setActivationState(int)const " (?setActivationState@btCollisionObject@@QBEXH@Z),该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) protected: void __thiscall osgbDynamics::RigidBodyAnimation::`vbase destructor'(void)" (__imp_??_DRigidBodyAnimation@osgbDynamics@@IAEXXZ),该符号在函数 "protected: virtual void * __thiscall osgbDynamics::RigidBodyAnimation::`scalar deleting destructor'(unsigned int)" (??_GRigidBodyAnimation@osgbDynamics@@MAEPAXI@Z) 中被引用
1>E:\OSG programs\osgBullet\Debug\osgBullet.exe : fatal error LNK1120: 20 个无法解析的外部命令
1>
1>生成失败。
1>
1>已用时间 00:00:00.75
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

该用户从未签到

发表于 2013-7-15 02:55:40 | 显示全部楼层
你编译osgBullet时候可以看到运行其中examples!你看到你成功运行的例子有链接器-输入-附加依赖项里面的所需库文件!把你的工程按例子添加就行了!

该用户从未签到

发表于 2013-7-15 13:32:26 | 显示全部楼层
我没仔细编译过 但是看你的错误提示 似乎应该动态链接库的问题 也有可能是dll版本跟lib版本不匹配 导致需要调用的函数找不到入口地址 应该就是这些个问题

该用户从未签到

发表于 2013-7-15 14:31:59 | 显示全部楼层
看起来好像是附加依赖项 里少了osgBulletd.lib。

该用户从未签到

 楼主| 发表于 2013-7-15 19:18:20 | 显示全部楼层
wchsnake 发表于 2013-7-15 02:55
你编译osgBullet时候可以看到运行其中examples!你看到你成功运行的例子有链接器-输入-附加依赖项里面的所需 ...

谢谢!确实如此,添加了附加依赖项果然能编译通过了,可是还是出不了结果,总是提示程序停止工作……郁闷

1>------ 已启动生成: 项目: osgBullet, 配置: Debug Win32 ------
1>生成启动时间为 2013/7/15 19:15:58。
1>InitializeBuildStatus:
1>  正在创建“Debug\osgBullet.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
1>ClCompile:
1>  main.cpp
1>ManifestResourceCompile:
1>  所有输出均为最新。
1>Manifest:
1>  所有输出均为最新。
1>LinkEmbedManifest:
1>  所有输出均为最新。
1>  osgBullet.vcxproj -> E:\OSG programs\osgBullet\Debug\osgBullet.exe
1>FinalizeBuildStatus:
1>  正在删除文件“Debug\osgBullet.unsuccessfulbuild”。
1>  正在对“Debug\osgBullet.lastbuildstate”执行 Touch 任务。
1>
1>生成成功。
1>
1>已用时间 00:00:05.84
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========

该用户从未签到

 楼主| 发表于 2013-7-15 19:20:32 | 显示全部楼层
buptronin 发表于 2013-7-15 13:32
我没仔细编译过 但是看你的错误提示 似乎应该动态链接库的问题 也有可能是dll版本跟lib版本不匹配 导致需要 ...

谢谢,是附加依赖项的问题,可是加进去编译成功后还有问题
无标题.png
1>------ 已启动生成: 项目: osgBullet, 配置: Debug Win32 ------
1>生成启动时间为 2013/7/15 19:15:58。
1>InitializeBuildStatus:
1>  正在创建“Debug\osgBullet.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
1>ClCompile:
1>  main.cpp
1>ManifestResourceCompile:
1>  所有输出均为最新。
1>Manifest:
1>  所有输出均为最新。
1>LinkEmbedManifest:
1>  所有输出均为最新。
1>  osgBullet.vcxproj -> E:\OSG programs\osgBullet\Debug\osgBullet.exe
1>FinalizeBuildStatus:
1>  正在删除文件“Debug\osgBullet.unsuccessfulbuild”。
1>  正在对“Debug\osgBullet.lastbuildstate”执行 Touch 任务。
1>
1>生成成功。
1>
1>已用时间 00:00:05.84
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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