|
发表于 2014-11-27 10:32:31
|
显示全部楼层
本帖最后由 nononono 于 2014-11-27 10:34 编辑
最终编译通过了,简单记录一下我遇到的问题,供后来人少走弯路。
在CMake配置的时候,感觉有三点比较重要:一个是需要勾选“Advanced”选项,这样才能设置bullet的几个库。另外CMake的时候,QT_QMAKE_EXECUTABLE项应该指向bin文件夹下的qmake.exe而不是默认值,否则找不到qt其他的库。最后一个是bullet root项,只的是bullet的源码文件夹,也就是包含Demos文件夹的那个路径。
我用vs2010,编译的时候,还需要各种包含include和lib文件和路径。除此之外注意需要修改的有四个地方。一个是,在BaseDragger.cpp中,找到所有的“command.accept(*(*itr));”,将之注销掉,替换为“(*itr)->constrain(command);”,否则会报错accept不是command的成员。另两处修改是,在头文件BaseDragger中,补充声明Node::NodeMask _intersectionMask ;void setIntersectionMask(Node::NodeMask);这两个内容.在BaseDragger.cpp中实现setIntersectionMask(),简单将收到的参数赋值给_intersectionMask就可以.最后一处,可能有些人不会碰到,就是osgCollisionDetection中的CollisionInterface,他重载了一个bullet的ContactResultCallback类,其中有一个虚函数,可能和你本机的bullet里的ContactResultCallback类中对应虚函数的参数表不一样,会造成无法实例化抽象函数的问题.按照本机的参数表修改一致就可以了
可能有些问题只是我才遇到的,可能其他人会碰到其他问题,这里只是PO出来供大家参考.
我的环境:win7 32bit,osg 3.0.0,QT 4.8.6,bullet 2.8.2 |
|