Подтвердить что ты не робот

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).

4b9b3361

Ответ 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 могут предоставить много отличного фона и подсказки о правильном пути.