Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Lua on the iPhone?

I am trying to use Lua on the iPhone. On Mac OS X, in a normal (non-iOS) Cocoa application, I used the following code:

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

I downloaded Lua 5.1.4 from lua.org/ftp and compiled it for Mac OS X. In the Xcode project, I used "Add Existing Framework" to add liblua.a and I used "Add Existing Files" to add the include directory.

This works as expected, and prints the string: "Hi from Lua". When I try the same thing in an iOS project, it gives the errors:

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

It seems that the .a file is not linked into the iPhone app. Does anybody know how to make this work?

(By the way, I don't really care that Apple might not accept my app if it has Lua in it.)

like image 767
InFreefall Avatar asked Jun 01 '09 22:06

InFreefall


2 Answers

You'll need to compile the Lua .a for ARM, not Intel. If the Lua library uses autoconf, you can use my favorite iphone/autoconf builder: build_for_iphoneos. If it's not autoconf, then you can use that script to get an idea of how to attack it. Sometimes you can just build a Static Library Xcode project, dump all the files into it and hit build. If the build is simple enough, it'll do most of the work for you.

I know it doesn't matter for your use, but Lua-based tools are generally shippable on the app store. You just can't download arbitrary code at run time and interpret it.

like image 149
Rob Napier Avatar answered Oct 04 '22 19:10

Rob Napier


You might want to check out iPhone Wax. It is a lua/iPhone bridge that lets you write native iPhone apps in pure lua! Here is a pretty good tutorial about it.

like image 27
probablyCorey Avatar answered Oct 04 '22 19:10

probablyCorey