我有这个项目需要集成 Box2D、Cocos2d-iPhone 和 iPhone 蜡。起初我把 cocos2d-iphone 和 box2d 放在一起,它给了我这个错误信息:
fatal error: 'cassert' file not found
#include <cassert>
^
我查了一下发现是因为box2d是用c++写的,你必须把所有引用box2d的源文件都设置为*.mm,这样苹果编译器才能把它编译成object-c++。
所以我只是将每个源文件都更改为 *.mm 并且它起作用了。
然后我试着把 iPhone 蜡放进去。iPhone 蜡是用 object-c 和 c 编写的。他们提供了一个wax.framework。所以我下载它并将它拖到我项目的框架区域中。它给了我这个错误:
"__Z9wax_startPcPFiP9lua_StateEz", referenced from:
_main in main_old.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
所以我再次搜索,我发现这是因为预期的库不存在。我逐个检查列表,我很确定每个设置都是正确的,我找不到问题。
所以我做了一些测试。我从其中一个模板创建了一个新的示例项目,并将 iPhone 蜡放入其中,它工作正常。然后我将 main.m 文件更改为 main.mm,它给出的错误就像上面一样。
那么我该如何解决呢?这是因为 object-C++ 无法导入 object-c 和 c 框架吗?我是否应该重新创建框架并将其所有名称更改为 *.mm?还是当我将源文件更改为 *.mm 时我做错了,应该有更好的解决方法?