2009-06-01 7 views
14

Я пытаюсь использовать Lua на iPhone. В Mac OS X, в обычной (не-IOS) приложения какао, я использовал следующий код:Lua на iPhone?

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

Я скачал Lua 5.1.4 из lua.org/ftp и скомпилирован для Mac OS X. В проекте Xcode я использовал «Добавить существующую структуру», чтобы добавить liblua.a, и я использовал «Добавить существующие файлы», чтобы добавить каталог include.

Работает так, как ожидалось, и печатает строку: «Привет от 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 в нем.)

+2

Я не думаю, что Apple откажется, если у вас есть Lua. Это отличная идея. – Kekoa

+0

Похоже, что Apple может смягчить свое положение на встроенных интерпретаторах внутри приложений iOS; см. http://www.appleoutsider.com/2010/06/10/hello-lua/ –

ответ

19

Вам нужно скомпилировать .a Lua для ARM, а не Intel. Если библиотека Lua использует autoconf, вы можете использовать мой любимый строитель iphone/autoconf: build_for_iphoneos. Если это не autoconf, вы можете использовать этот скрипт, чтобы получить представление о том, как его атаковать. Иногда вы можете просто создать проект Static Library Xcode, выгрузить все файлы и нажать «Создать». Если сборка достаточно проста, она сделает большую часть работы для вас.

Я знаю, что это не имеет значения для вашего использования, но инструменты на основе Lua обычно поставляются в магазине приложений. Вы просто не можете загрузить произвольный код во время выполнения и интерпретировать его.

+9

это Lua, а не LUA. И он не использует autoconf, btw – Javier

+5

Большое спасибо, компиляция для ARM сработала. Все, что я делал, это бросить папку src в проект Xcode, создать статическую целевую библиотеку и поместить все .h и.c в папке «Файлы компиляции» целевого объекта, и у меня есть рабочая библиотека. – InFreefall

+0

Возможно, вы захотите сделать ссылку для загрузки более заметной :) В противном случае, спасибо! –

14

Возможно, вы захотите проверить iPhone Wax. Это мост lua/iPhone, который позволяет писать собственные приложения для iPhone в чистом виде! Вот довольно good tutorial.

4

Если вы хотите написать Lua код для прошивки, а затем проверить моай сразу: http://getmoai.com/

Его абсолютно приятный фреймворк для разработки игр на прошивку и Android, а также Windows, и OSX. Не только это, но и дает довольно хорошее представление о том, как правильно внедрять среду хостинга на основе Lua-VM для сценариев в кросс-платформенной манере: из MOAI вы можете многому научиться об этом. Я до сих пор делал 4 титула с MOAI и не буду останавливаться в ближайшее время. MOAI абсолютно пинает задницу!

Также проверьте LOAD81, который подобная попытка, хотя и с SDL в качестве целевой среды: http://github.com/antirez/load81

(я способствовал немного проекта LOAD81, в частности, придав ему черты интереса/ценность для OpenPandora сообщество MOAI более коммерческое, LOAD81 больше любителя ..)

Для тех, кто пытается изучить Lua и различные методы интеграции Lua VM в проект для нескольких целей платформы, MOAI и LOAD81 могут обеспечить множество отличных фон и подсказки о правильном способе продолжения.