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

转载于:https://www.cnblogs.com/cmgrass/p/3672551.html

让Cocos2dx中的TestCPP中的Box2dTest运行起来相关推荐

  1. Cocos2d-x 脚本语言Lua中的面向对象

    Cocos2d-x 脚本语言Lua中的面向对象 面向对象不是针对某一门语言,而是一种思想.在面向过程的语言也能够使用面向对象的思想来进行编程. 在Lua中,并没有面向对象的概念存在,没有类的定义和子类 ...

  2. ajax如何循环lis,关于js中循环遍历中顺序执行多个嵌套ajax的问题

    就是业务上需要完成一个功能,这个功能需要依次调用四个接口,后面接口的参数都依赖于前一个接口的返回值. 类似这样: var objArr = "从其他逻辑获得"; for(var n ...

  3. C#中Winform程序中如何实现多维表头【不通过第三方报表程序】

    问题:C#中Winform程序中如何实现多维表头. 在网上搜了很多方法,大多数方法对于我这种新手,看的都不是很懂.最后在新浪博客看到了一篇比较易懂的文章:[DataGridView二维表头与合并单元格 ...

  4. 关于python缩进的描述中_关于Python程序中与“缩进”有关的说法中,以下选项中正确的是()...

    关于Python程序中与"缩进"有关的说法中,以下选项中正确的是() 答:缩进在程序中长度统一且强制使用 同文学或同音乐主题的民歌,<_______>是其中之一.此曲经 ...

  5. python中json dumps_python中json.loads,dumps,jsonify使用

    search_info = {'id':132,'user_role':3} print type(search_info) #输出 #转为string用dumps print type(json.d ...

  6. VS2010中“工具选项中的VC++目录编辑功能已被否决”解决方法

    http://blog.csdn.net/chaijunkun/article/details/6658923 这是VS2010的改变,不能够在"工具-选项"中看到"VC ...

  7. django-celery中配置celery中的日志

    django-celery中配置celery中的日志 django配置文件中的logging只是针对django中的views.API起作用,对celery不起作用,也就是说celery不能使用dja ...

  8. word录入表单数据 java 导入系统,java导入excel | 怎么把excel中的数据批量导入到word中的表格中...

    用javascript怎么实现把excel中的数据批量导入到数据库表中 这个js不能直接实现吧 我们程序用到 先读取excel内容转换成数组 然后放到页面上 再提交表单 储存 MySql如何批量添加数 ...

  9. php数组重复值销毁,如何从PHP中删除数组中的重复值

    如何从PHP中删除数组中的重复值 如何从PHP中删除数组中的重复值? 21个解决方案 204 votes 使用array_unique(). 例: $array = array(1, 2, 2, 3) ...

  10. oracle urlencode 中文,Python2和Python3中urllib库中urlencode的使用注意事项

    前言 在Python中,我们通常使用urllib中的urlencode方法将字典编码,用于提交数据给url等操作,但是在Python2和Python3中urllib模块中所提供的urlencode的包 ...

最新文章

  1. 关于MonoDevelop自动缩进的设置
  2. android python 纠正图片,Python脚本替换Android资源(包名,图片,文件内容)
  3. es6 迭代器对象的 return(),throw()
  4. [转] 数据库加锁 sql加锁的
  5. 转载 MySql常用查询语句(23种)
  6. 起风了数字简谱用计算机,起风了钢琴简谱-数字双手-买辣椒也用券
  7. 利用python爬取飞猪信息_Python---20行代码爬取斗鱼平台房间数据(下)-阿里云开发者社区...
  8. 【altium designer】画原理图
  9. 复制微信号并打开微信_理解信号并不那么复杂
  10. 仅将人脑视为预测机器,人类文明会出什么问题
  11. 集合之扑克牌---洗牌+发牌+发牌后排序+看牌
  12. 电子签章过程中的原始数据处理
  13. android App中bug收集的工具类
  14. 算法实战应用案例精讲-【自动化办公】使用Python操作PDF文档全记录(python代码实战)
  15. encodeURI encodeURIComponent 的区别,和使用场景
  16. 语言学与计算机,计算机与乔姆斯基语言学_刘俐李
  17. UC3843 PWM控制芯片详解及其应用电路
  18. 假设检验之p值(probability value)
  19. 如何设计一个高性能的秒杀系统
  20. Android项目:手机安全卫士(3)—— 主界面布局

热门文章

  1. Spring 一二事(1)
  2. [golang 易犯错误] golang 局部变量初始化:=的陷阱
  3. android DVM
  4. Hyper-V上Linux的鼠标驱动
  5. 一晃眼这个blog已经丢弃两年。。。
  6. 依赖注入的两种常用方式(构造器和Setter)与注入内容(装配数据)——Spring IOC/DI(三)
  7. Android 不同布局类型measure、layout、draw耗时对比
  8. python异常类父类_python【第五篇】异常处理
  9. Eclipse创建并运行Java程序输出Hello World
  10. Luogu3825[NOI2017] 游戏