Lua на iPhone?
Я пытаюсь использовать Lua на iPhone. В Mac OS X в обычном (не iOS) приложении Cocoa я использовал следующий код:
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).
Ответы
Ответ 1
Вам нужно скомпилировать Lua.a для ARM, а не для Intel. Если библиотека Lua использует autoconf, вы можете использовать мой любимый построитель iphone/autoconf: build_for_iphoneos
. Если это не autoconf, вы можете использовать этот script, чтобы понять, как его атаковать. Иногда вы можете просто создать проект Static Library Xcode, выгрузить все файлы и нажать "Создать". Если сборка достаточно проста, она сделает большую часть работы для вас.
Я знаю, что это не имеет значения для вашего использования, но инструменты на основе Lua обычно поставляются в магазине приложений. Вы просто не можете загрузить произвольный код во время выполнения и интерпретировать его.
Ответ 2
Возможно, вы захотите проверить iPhone Wax. Это мост lua/iPhone, который позволяет писать собственные приложения для iPhone в чистом виде! Вот хороший хороший учебник об этом.
Ответ 3
Если вы хотите написать код Lua для iOS, немедленно проверьте MOAI: http://getmoai.com/
Его абсолютно приятная основа для разработки игр на iOS и 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 могут предоставить много отличного фона и подсказки о правильном пути.