【发布时间】:2012-05-25 08:12:42
【问题描述】:
我有这个项目需要集成 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 时我做错了,应该有更好的解决方法?
【问题讨论】:
-
感谢发布的答案。实际上问题是由 C++ 试图调用 C 函数引起的。我只是痴迷于整个 Object-C++ 的东西,我忘记了它。只需将 extern C 放在进口蜡的地方,一切都已修复。再次感谢您的帮助。
-
我在发布这个问题几分钟后就发现了这个问题。 StackOverFlow 是这样工作的吗?您发布一个问题,然后您自己找出答案。 :)
标签: objective-c frameworks cocos2d-iphone box2d iphone-wax