zoukankan      html  css  js  c++  java
  • 让Cocos2dx中的TestCPP中的Box2dTest运行起来

    一般而言,如果你导入TestCPP到VS2012中去后,会编译十几分钟才会出现窗口界面,这是包含Cocos2dx所有功能的一个demo,功能非常齐全强大,里面有两个关于Box2d的测试案例,一个是Box2dTest,另一个是Box2dTestBed,运行发现,Box2dTest运行不了,提示说“Should define CC_ENABLE_BOX2D_INTEGRATION=1 to run this test case”。

    说是要定义CC_ENABLE_BOX2D_INTEGRATION这个宏为1,那要怎样定义呢,可以再程序的最初入口定义,或者打开TestCPP的工程属性,打开[C++]->[预处理器],找到预处理器定义,在里面添加“CC_ENABLE_BOX2D_INTEGRATION=1”即可,此时TestCPP它的CC_ENABLE_BOX2D_INTEGRATION这个宏就是1了。

    然后我试着再次跑了一下TestCPP工程,发现Box2dTest仍然不能运行,此时的错误不是CC_ENABLE_BOX2D_INTEGRATION没有定义,而是弹出了一个断言对话框,我F5调试进入,才发现,运行到libExtensions这个工程里面的如下代码:

    1 void PhysicsSprite::setB2Body(b2Body *pBody)
    2 {
    3 #if CC_ENABLE_BOX2D_INTEGRATION
    4     _pB2Body = pBody;
    5 #else
    6     CCASSERT(false, "Can't call box2d methods when Box2d is disabled");
    7 #endif
    8 }

    运行跑到了这里:CCASSERT(false, "Can't call box2d methods when Box2d is disabled");才发现,在libExtensions中也有CC_ENABLE_BOX2D_INTEGRATION这个启动Box2d的宏开关。我看了看CCPhysicsSprite.cpp这个文件,在文件的头部,有行注释:

    1 #if (CC_ENABLE_CHIPMUNK_INTEGRATION && CC_ENABLE_BOX2D_INTEGRATION)
    2 #error "Either Chipmunk or Box2d should be enabled, but not both at the same time"
    3 #endif

    发现libExtensions库,只能同时支持一个物理引擎,要么是Chipmunk要么就是Box2d,默认是支持Chipmunk的。

    到此处,才真正找到根源,解决的办法就是给libExtensions工程添加CC_ENABLE_BOX2D_INTEGRATION标记,并且让其=1,并让CC_ENABLE_CHIPMUNK_INTEGRATION=0.

    //本文作者:cmlanche  文章内容目前的写法仅仅作为一个笔记,自己参考,并不想特意解释让别人明白

    //                                                                                                                     2014-04-18

  • 相关阅读:
    CodeForces
    CodeForces
    springboot 入门七-静态资源处理
    springboot 入门六-多环境日志配置
    springboot 入门五-日志一
    springboot 入门四-时间类型处理
    springboot 入门三- 读取配置信息二(读取属性文件方式)
    springboot 入门二- 读取配置信息一
    springboot 入门一 hello world!
    SVN提交小结(转)
  • 原文地址:https://www.cnblogs.com/cmgrass/p/3672551.html
Copyright © 2011-2022 走看看