2009-06-01 10 views
14

Próbuję użyć Lua na iPhone. W systemie Mac OS X, w normalnym (non-iOS) aplikacji Cocoa, używałem następujący kod:Lua na iPhone?

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

Pobrałem Lua 5.1.4 z lua.org/ftp i skompilowane go do Mac OS X. W projekcie Xcode użyłem "Dodaj istniejącą strukturę", aby dodać liblua.a i użyłem "Dodaj istniejące pliki", aby dodać katalog zawierający.

Działa zgodnie z oczekiwaniami i wyświetla ciąg znaków: "Cześć z Lua". Gdy próbuję samo w projekcie iOS, daje błędy:

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

Wydaje się, że plik .a nie jest powiązana w aplikacji iPhone. Czy ktoś wie, jak to zrobić?

(Nawiasem mówiąc, nie obchodzi, że Apple może nie przyjąć moją aplikację, jeśli ma w nim Lua).

+2

Nie sądzę, że Apple odrzuci, jeśli masz w sobie Luę. To świetny pomysł. – Kekoa

+0

Wygląda na to, że Apple może zmiękczyć swoją pozycję na wbudowanych interpreterach w aplikacjach na iOS; zobacz http://www.appleoutsider.com/2010/06/10/hello-lua/ –

Odpowiedz

19

Musisz skompilować .a Lua dla ARM, a nie Intel. Jeśli biblioteka Lua używa autoconf, możesz użyć mojego ulubionego konstruktora iphone/autoconf: build_for_iphoneos. Jeśli nie jest to autoconf, możesz użyć tego skryptu, aby zorientować się, jak go zaatakować. Czasami możesz po prostu zbudować projekt Xcode Static Library, zrzucić wszystkie pliki do niego i uderzyć w kompilację. Jeśli kompilacja jest dość prosta, wykona większość pracy za Ciebie.

Wiem, że to nie ma znaczenia dla twojego użytku, ale narzędzia oparte na Lua są zazwyczaj dostępne w sklepie z aplikacjami. Po prostu nie można pobrać dowolnego kodu w czasie wykonywania i zinterpretować go.

+9

to Lua, nie LUA. I nie używa autoconf, btw – Javier

+5

Dziękuję bardzo, kompilacja za działa ARM. Wszystko, co zrobiłem, to wrzuć folder src do projektu Xcode, stwórz statyczny cel biblioteki i umieść wszystkie .h i.c pliki w folderze Źródła kompilacji celu, a ja mam swoją bibliotekę roboczą. – InFreefall

+0

Może chcesz, aby link do pobrania był nieco bardziej widoczny :) W przeciwnym razie, dzięki! –

14

Możesz chcieć sprawdzić iPhone'a wosk. Jest to most dla lua/iPhone'a, który pozwala pisać natywne aplikacje na iPhone'a w czystej lua! Tutaj jest ładny good tutorial na ten temat.

4

Jeśli chcesz napisać kod Lua dla iOS, a następnie sprawdzić moai natychmiast: http://getmoai.com/

Jest absolutnie przyjemny ramy dla rozwoju gier na iOS i Androida, a także Windows i OSX. Nie tylko to, ale zapewnia całkiem niezły pomysł, jak poprawnie zaimplementować środowisko hostingu Lua-VM do obsługi skryptów w sposób wieloplatformowy: od MOAI możesz się wiele o tym dowiedzieć. Zrobiłem do tej pory 4 tytuły z MOAI i nie będę się zatrzymywał w najbliższym czasie .. MOAI absolutnie kopie tyłek!

Również sprawdzić LOAD81, który jest podobny wysiłek aczkolwiek z SDL w środowisku docelowym: http://github.com/antirez/load81

(mam trochę przyczynił się do projektu LOAD81 konkretnie daje to cechy turystyczne/wartość do OpenPandora MOAI jest bardziej komercyjna, LOAD81 więcej hobbystów ..)

Dla tych, którzy próbują nauczyć się Lua i różnych metod integracji Lua VM w projekcie dla wielu celów platformowych, zarówno MOAI, jak i LOAD81 mogą zapewnić wiele wspaniałych tło i wskazówki dotyczące właściwego sposobu postępowania.