我正在 xcode 上用 cocos2d-x 编写游戏,但在为 armv7/7s 编译正确版本的 Lua 时遇到问题。
这是我收到的错误消息:
ld: warning: ignoring file
/Users/seriousgames/Documents/PopulationTest/PopulationTest/libs/lua/liblua.a, file was built for archive which is not the architecture being linked (armv7): /Users/seriousgames/Documents/PopulationTest/PopulationTest/libs/lua/liblua.a
Undefined symbols for architecture armv7:
"_luaL_newstate", referenced from:
Behavior::onTerminate(Status) in Behavior.o
"_luaL_openlibs", referenced from:
Behavior::onTerminate(Status) in Behavior.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
如果我选择为 macosx(而不是 iOS)编译,LUA 确实可以工作。
编辑:我最终使用了较旧的 Lua 版本 5.1.4,并按照此处的说明进行操作:http: //blog.stokedsoftware.com/blog/2012/02/05/scripting-ios-games-with-lua -part-ii/ 此方法不需要 lualib.a 外部库,而是 xcode 将 lua 源构建到项目中。
注意:虽然他的代码在 Objective C 中,但我发现他的方法确实适用于 cocos2d-x。
他特别从构建中排除了 lua.c 和 luac.c 文件。我选择不这样做,但我注释掉了 int main() 函数,因为它们会与 main.m 中的函数发生冲突。我会稍微回答一下这个问题,但我仍然有兴趣知道如何为 arm7/7s 构建 liblua.a。