Я пишу игру с cocos2d-x на xcode, и у меня возникают проблемы с компиляцией правильной версии Lua для armv7/7s.Lua for ARMv7/ARMv7s
Вот сообщение об ошибке я получаю:
ld: warning: ignoring file
/Users/seriousgames/Documents/PopulationTest/PopulationTest/libs/lua/liblua.a, file was built for archive which is not the architecture being linked (armv7): /Users/seriousgames/Documents/PopulationTest/PopulationTest/libs/lua/liblua.a
Undefined symbols for architecture armv7:
"_luaL_newstate", referenced from:
Behavior::onTerminate(Status) in Behavior.o
"_luaL_openlibs", referenced from:
Behavior::onTerminate(Status) in Behavior.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
LUA делает работу, если я выбираю для компиляции для MacOS (не IOS).
Edit: я в конечном итоге использую старую сборку Lua, версии 5.1.4, и следовал инструкциям здесь: http://blog.stokedsoftware.com/blog/2012/02/05/scripting-ios-games-with-lua-part-ii/ Этого метод не требует lualib.a внешней библиотеки, а Xcode создает источник Lua в проект.
Примечание: хотя его код находится в Objective C, я обнаружил, что его метод действительно работает для cocos2d-x.
Он специально исключает файлы lua.c и luac.c из сборки. Я решил не делать этого, но я прокомментировал функции int main(), потому что они столкнутся с ними в main.m. Я отвечу на этот вопрос немного, но мне все еще интересно узнать, как создать liblua.a для arm7/7s.
Похоже, вы скомпилировали 'liblua.a' для OS X, а не iOS. –
Эта ошибка - это просто сбой связи. Из этого трудно вывести из этого, почему библиотека не была скомпилирована для правильной архитектуры. Рассмотрите возможность вставки заголовка архива, полученного из 'otool -a' – Will
Кажется, что ваш код является C++, но вы не сказали компилятору, что библиотека Lua является библиотекой C. Включите lua.hpp вместо lua.h – lhf