2009-06-01 20 views
14

我想在iPhone上使用Lua。在Mac OS X,在正常(非iOS版)Cocoa應用程序,我用下面的代碼: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從lua.org/ftp 5.1.4和編譯它的Mac OS X 在Xcode項目中,我使用「添加現有框架」添加liblua.a,並使用「添加現有文件」添加包含目錄。

按預期工作,並打印字符串:「來自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 

看來,某文件未鏈接到iPhone應用程序。 有誰知道如何使這項工作?

(順便說一句,我真的不關心,蘋果可能不接受我的應用程序,如果有Lua中它。)

+2

我不認爲蘋果會拒絕,如果你有Lua的話。這是一個好主意。 – Kekoa 2009-06-01 22:41:01

+0

看來,蘋果可能會在iOS應用程序內軟化他們對嵌入式解釋器的立場;見http://www.appleoutsider.com/2010/06/10/hello-lua/ – 2010-06-10 21:32:00

回答

19

你需要編譯的Lua .A爲ARM,英特爾沒有。如果Lua庫使用autoconf,則可以使用我最喜歡的iphone/autoconf構建器:build_for_iphoneos。如果它不是autoconf,那麼你可以使用該腳本來了解如何攻擊它。有時你可以建立一個靜態庫Xcode項目,將所有文件轉儲到其中,然後構建。如果構建足夠簡單,它將爲您完成大部分工作。

我知道這對您的使用並不重要,但基於Lua的工具通常可以在應用商店中交付。你不能在運行時下載任意代碼並解釋它。

14

您可能想查看iPhone Wax。它是一個lua/iPhone橋樑,可讓您在純粹的lua中編寫原生iPhone應用程序!這裏有一個漂亮的good tutorial

4

如果你想要寫的iOS Lua代碼,然後立刻退房MOAI:http://getmoai.com/

其開發的iOS和Android,以及Windows和OSX遊戲絕對過癮框架。不僅如此,它還提供了一個關於如何正確實現基於Lua-VM的託管環境以便跨平臺腳本編寫的非常好的主意:從MOAI,您可以瞭解很多相關信息。到目前爲止,我已經用MOAI完成了4個遊戲,並且不會很快停止。MOAI絕對會踢屁股!

還檢查了LOAD81,這是一個類似的努力,儘管有SDL作爲目標環境:http://github.com/antirez/load81

(我已經貢獻了一個小的LOAD81項目,特別是給予利息/值的特點,以便在OpenPandora MOAI更商業化,LOAD81更多業餘愛好者......)

對於那些試圖學習Lua以及將Lua VM集成到多平臺目標項目中的不同方法,MOAI和LOAD81都可以提供很多很棒的背景和線索關於正確的方式進行。