2009-06-01 13 views
14

Estoy tratando de usar Lua en el iPhone. En Mac OS X, en una aplicación Cocoa normal (no-IOS), he utilizado el siguiente código:Lua en el iPhone?

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

he descargado desde Lua 5.1.4 lua.org/ftp y compilado para Mac OS X. En el proyecto de Xcode, utilicé "Agregar marco existente" para agregar liblua.a y utilicé "Agregar archivos existentes" para agregar el directorio de inclusión.

Esto funciona como se esperaba e imprime la cadena: "Hola desde Lua". Cuando intento lo mismo en un proyecto de iOS, da a los errores:

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

Parece que el archivo .a no está vinculada a la aplicación para el iPhone. ¿Alguien sabe cómo hacer que esto funcione?

(Por cierto, no me importa que Apple podría no aceptar mi aplicación si tiene Lua en ella.)

+2

No creo que Apple rechazará si tiene Lua en él. Es una gran idea. – Kekoa

+0

Parece que Apple puede suavizar su posición en intérpretes integrados dentro de las aplicaciones de iOS; ver http://www.appleoutsider.com/2010/06/10/hello-lua/ –

Respuesta

19

Tendrá que compilar el .a Lua para ARM, Intel no. Si la biblioteca de Lua usa autoconf, puede usar mi creador de iphone/autoconf favorito: build_for_iphoneos. Si no es autoconf, puedes usar ese script para tener una idea de cómo atacarlo. Algunas veces puedes simplemente construir un proyecto de Xcode de la Biblioteca Estática, volcar todos los archivos en él y presionar construir. Si la construcción es lo suficientemente simple, hará la mayor parte del trabajo por usted.

Sé que no tiene importancia para su uso, pero las herramientas basadas en Lua generalmente se pueden enviar en la tienda de aplicaciones. Simplemente no puede descargar código arbitrario en tiempo de ejecución e interpretarlo.

+9

es Lua, no LUA. Y no usa 'autoconf, por cierto – Javier

+5

Muchas gracias, compilando para el ARM trabajado. Todo lo que hice fue lanzar la carpeta src en un proyecto de Xcode, crear un objetivo de biblioteca estática y poner todos los archivos .h y.c archivos en la carpeta de compilación de orígenes del destino, y tengo mi biblioteca de trabajo. – InFreefall

+0

Quizás desee hacer que el enlace de descarga sea un poco más visible :) De lo contrario, ¡gracias! –

14

Es posible que desee retirar iPhone cera. Es un puente lua/iPhone que te permite escribir aplicaciones nativas para iPhone en lua puro. Aquí hay una linda good tutorial al respecto.

4

Si desea escribir código Lua para iOS, a continuación, echa un vistazo a MOAI inmediato: http://getmoai.com/

Su absolutamente un marco agradable para el desarrollo de juegos en iOS y Android, así como Windows y OSX. No solo eso, sino que proporciona una muy buena idea de cómo implementar correctamente un entorno de alojamiento basado en Lua-VM para la creación de scripts de forma multiplataforma: de MOAI, puede aprender mucho sobre esto. He hecho 4 títulos con MOAI hasta el momento, y no se detendrá en el corto plazo. ¡MOAI absolutamente patea el culo!

También puedes ver LOAD81, que es un esfuerzo similar aunque con SDL como el entorno de destino: http://github.com/antirez/load81

(he contribuido un poco a la LOAD81 proyecto, dando específicamente las características de interés/valor a la OpenPandora comunidad. MOAI es más comercial, LOAD81 es más aficionado ..)

Para aquellos que intentan aprender Lua y los diferentes métodos de integración de Lua VM en un proyecto para múltiples plataformas, tanto MOAI como LOAD81 pueden proporcionar una gran cantidad de antecedentes y pistas sobre la forma correcta de proceder.