15

我正在尝试在 iPhone 上使用 Lua。在 Mac OS X 上,在普通(非 iOS)Cocoa 应用程序中,我使用了以下代码:

lua_State* l;
l = lua_open();
luaL_openlibs(l);
luaL_loadstring(l, "print(\"Hi from Lua\");");
lua_pcall(l, 0, 0, 0);

我从 lua.org/ftp 下载了 Lua 5.1.4 并为 Mac OS X 编译了它。在 Xcode 项目中,我使用“添加现有框架”添加liblua.a,我使用“添加现有文件”添加包含目录。

这按预期工作,并打印字符串:“Hi from Lua”。当我在 iOS 项目中尝试同样的事情时,它会给出错误:

"_luaL_newstate", referenced from:
_main in main.o
more of the same thing...
symbol(s) not found
collect2: ld returned 1 exit status

.a 文件似乎没有链接到 iPhone 应用程序。有谁知道如何使这项工作?

(顺便说一句,如果 Apple 中包含 Lua,我并不关心 Apple 可能不会接受我的应用程序。)

4

3 回答 3

19

您需要为 ARM 而不是 Intel 编译 Lua .a。如果 Lua 库使用 autoconf,你可以使用我最喜欢的 iphone/autoconf builder: build_for_iphoneos. 如果它不是 autoconf,那么您可以使用该脚本来了解如何攻击它。有时您可以只构建一个静态库 Xcode 项目,将所有文件转储到其中并点击构建。如果构建足够简单,它将为您完成大部分工作。

我知道这对您的使用无关紧要,但基于 Lua 的工具通常可以在应用商店中提供。您只是不能在运行时下载任意代码并对其进行解释。

于 2009-06-01T22:43:03.980 回答
14

您可能想查看 iPhone Wax。它是一个 lua/iPhone 桥,让您可以在纯 lua 中编写原生 iPhone 应用程序!这是一个很好的教程

于 2009-10-05T17:22:58.777 回答
4

如果你想为 iOS 编写 Lua 代码,那么立即查看 MOAI:http: //getmoai.com/

它是在 iOS 和 Android 以及 Windows 和 OSX 上开发游戏的绝对令人愉快的框架。不仅如此,它还为如何正确实现基于 Lua-VM 的托管环境以跨平台方式编写脚本提供了一个很好的想法:从 MOAI 中,您可以学到很多这方面的知识。到目前为止,我已经用 MOAI 完成了 4 个标题,并且不会很快停止.. MOAI 绝对踢屁股!

另请查看 LOAD81,这是一项类似的工作,尽管使用 SDL 作为目标环境:http: //github.com/antirez/load81

(我为 LOAD81 项目做出了一些贡献,特别是赋予它对 OpenPandora 社区感兴趣/有价值的功能。MOAI 更商业化,LOAD81 更业余..)

对于那些试图学习 Lua 以及将 Lua VM 集成到一个项目以实现多个平台目标的不同方法的人来说,MOAI 和 LOAD81 都可以提供很多很好的背景知识和关于正确方法的线索。

于 2012-03-30T09:58:06.327 回答