在使用Lua、Cocos2D和Box2D时出现编译错误。

我按照这篇非常有帮助的文章描述的过程,成功地将Lua添加到默认的Xcode模板项目中,并获得了“Hello,world”的文本打印。

然而,当我尝试将Lua添加到我的现有的Cocos2D/Box2d项目中,完全按照相同的过程操作时,我遇到了编译错误:

Undefined symbols for architecture i386:

"luaL_newstate()", referenced from ...

关于这个错误的搜索结果提到了以下可能的问题之一,但我认为在我的情况下都很好:

  • 目标的Build Phases -> Compile Sources - 但是默认模板项目和我的Cocos2D/Box2d项目中都有相同的Lua.c文件
  • 我将默认项目的标头搜索路径设置为与Cocos2D/Box2d项目中的路径相匹配,并且模板仍然可以编译。
  • 模板项目使用的所有框架也都在我的Cocos2D/Box2d项目中。

我错过了什么?

任何帮助都将不胜感激。 谢谢!

点赞
用户227148
用户227148

我最近做了这个集成,你现在遇到的问题是 Lua 文件是用 C 编写的,而 Box2D 是 C++ 编写的。

你需要像这样包装 Lua 的包含文件:

#ifdef __cplusplus
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#endif

如果还有问题,请将错误信息留在评论中。

2012-11-10 01:07:42