2009-06-01 27 views
14

Ich versuche, Lua auf dem iPhone zu verwenden. Unter Mac OS X wird in einem normalen (nicht-iOS) Cocoa-Anwendung, habe ich den folgenden Code:Lua auf dem iPhone?

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

ich heruntergeladen Lua von lua.org/ftp 5.1.4 und es für Mac OS X kompiliert Im Xcode-Projekt habe ich "Add Existing Framework" verwendet, um liblua.a hinzuzufügen, und ich habe "Add Existing Files" verwendet, um das Include-Verzeichnis hinzuzufügen.

Dies funktioniert wie erwartet und druckt die Zeichenfolge: "Hallo von Lua". Wenn ich die gleiche Sache in einem iOS-Projekt versuche, gibt es die Fehler:

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

Es scheint, dass die .a-Datei nicht in das iPhone-App verknüpft ist. Weiß jemand, wie man das macht?

(By the way, ich weiß nicht wirklich, dass Apple möglicherweise nicht meine Anwendung akzeptieren, wenn es Lua hat in ihm.)

+2

Ich denke nicht, dass Apple ablehnen wird, wenn Sie Lua darin haben. Es ist eine großartige Idee. – Kekoa

+0

Es scheint, dass Apple ihre Position bei eingebetteten Interpretern in iOS-Anwendungen abschwächen könnte. siehe http://www.appleoutsider.com/2010/06/10/hello-lua/ –

Antwort

19

Sie finden das Lua .a für ARM kompilieren müssen, nicht Intel. Wenn die Lua-Bibliothek autoconf verwendet, können Sie meinen bevorzugten iphone/autoconf-Builder verwenden: build_for_iphoneos. Wenn es nicht autoconf ist, können Sie dieses Skript verwenden, um eine Vorstellung davon zu bekommen, wie es angegriffen wird. Manchmal können Sie einfach ein Static-Library-Xcode-Projekt erstellen, alle Dateien darin ablegen und Build erstellen. Wenn der Build einfach genug ist, erledigt er die meiste Arbeit für Sie.

Ich weiß, dass es für Ihre Verwendung keine Rolle spielt, aber Lua-basierte Tools sind in der Regel im App Store erhältlich. Sie können zur Laufzeit keinen beliebigen Code herunterladen und interpretieren.

+9

es ist Lua, nicht LUA. Und es nutzt nicht autoconf, btw – Javier

+5

Vielen Dank, kompilieren für den ARM gearbeitet. Alles, was ich getan habe, war den src-Ordner in ein Xcode-Projekt zu werfen, ein statisches Bibliotheksziel zu erstellen und alle .h und.c-Dateien im Ordner Compile Sources des Ziels, und ich habe meine Arbeitsbibliothek. – InFreefall

+0

Vielleicht möchten Sie den Download-Link ein bisschen mehr sichtbar machen :) Ansonsten, danke! –

14

Vielleicht möchten Sie iPhone Wax auschecken. Es ist eine Lua/iPhone Bridge, mit der Sie native iPhone Apps in reinem Lua schreiben können! Hier ist eine hübsche good tutorial darüber.

4

Wenn Sie Lua-Code für iOS zu schreiben, dann MOAI sofort überprüfen: http://getmoai.com/

Es ist ein absolut angenehmer Rahmen für Spiele auf iOS und Android, sowie Windows und OSX zu entwickeln. Nicht nur das, aber es bietet eine ziemlich gute Idee, wie man eine Lua-VM-basierte Hosting-Umgebung für das Scripting plattformübergreifend richtig implementiert: Von MOAI können Sie eine Menge darüber lernen. Ich habe bisher 4 Titel mit MOAI gemacht und werde in naher Zukunft nicht aufhören. MOAI kickt absolut Arsch!

Überprüfen Sie auch heraus LOAD81, die allerdings mit SDL als Zielumgebung eine ähnliche Anstrengung ist: http://github.com/antirez/load81

(ich ein wenig zum LOAD81 Projekt beigetragen haben, speziell bietet es von Interesse/Wert auf die Openpandora geben Gemeinschaft. MOAI ist mehr kommerzielle, LOAD81 mehr Bastler ..)

für diejenigen, die versuchen Lua und die verschiedenen Methoden der Integration der Lua VM in einem Projekt für mehrere Plattform Ziele zu lernen, sowohl MOAI und LOAD81 kann eine Menge große bieten Hintergrund und Hinweise auf den richtigen Weg.