本系列教程主要介紹如何在C/C++程序里面嵌入Lua腳本,我打算從以下幾個方面來介紹:
1.如何在C/C++里面嵌入Lua腳本
2.Lua訪問C/C++數(shù)據(jù)結(jié)構(gòu)(這里面要介紹類,結(jié)構(gòu)體,函數(shù),變量,枚舉等數(shù)據(jù)類型在lua里面如何訪問)
3.C/C++訪問Lua的數(shù)據(jù),主要是基本數(shù)據(jù)類型,函數(shù)和Table
4.Cocos2D-X里面的Lua綁定(含自動綁定與手動綁定)
5.Cocos2D-x里面Lua和C/C++相互調(diào)用
6.Cocos2D-x里面Lua和Java相互調(diào)用
7.Cocos2D-x里面Lua和Objective-C相互調(diào)用
本系列教程不會過多地介紹Lua的基本語法,關(guān)于Lua基本語法的學習,推薦《Programming In Lua》。 如有紕漏,歡迎指出,謝謝。
另外,關(guān)于更新時間,每周一篇,定期或者不定期,呵呵。
Mac項目集成Lua
準備工作
首先,新建一個控制臺應用程序。 打開Xcode,New->Project->OSX->Command Line Tool,取名為Lesson01如下圖所示:
接下來,我們需要下載lua5.2.3.下載完后,解壓縮,然后cd到剛剛解壓縮的路徑下面,輸入make macosx,這樣便可以生成Mac下面的lib文件。
接下來把剛剛解壓縮的文件夾拷貝到你新建的工程下面,然后設(shè)置include路徑和library路徑。(注意,這里是不需要把頭文件添加到Xcode里面的,只要指定include路徑,編譯的時候,編譯器會自動去找的。)
因為我的Lua文件夾的路徑是:xxxx/Lesson01/lua-5.2.3,所以,我把search path和library path分別設(shè)置為:
下面是我的工程與lua之間的目錄結(jié)構(gòu),liblua.a文件是從src里面拷貝出來的。(前面我們使用make macosx生成出來的)
注意:如果直接添加lua的所有源碼,則會編譯報錯。因為lua.c里面也有一個main函數(shù)。這個main函數(shù)是用來生成可執(zhí)行程序的。 另外,如果是添加其它第三方的庫,也可以參考這個方法,添加search path和library path
C++調(diào)用Lua文件
首先,打開main.cpp,并包含以下頭文件:
如果此時編譯不報錯,則說明你之前設(shè)置的search path是正確的,如果報錯,請自行調(diào)整search path。
這里面的lua.hpp的內(nèi)容如下:
這才是大多數(shù)Lua教程里的代碼嘛。然后在main函數(shù)里面添加以下內(nèi)容:
新建Lua文件
選擇New->File->Other,然后命名為hello.lua, 以下是hello.lua里面的內(nèi)容:
編譯并運行
此時編譯并運行,這時可能看不到控制臺輸出”Hello World”。因為你的Lua腳本沒有拷貝到程序里面去,我們需要再設(shè)置一下。如下圖所示: (注意:subpath要清空,copy only when installing去掉打勾)
這時,編譯并運行,你會得到如下結(jié)果 :
接下來,我們講講IOS項目怎么集成Lua。
IOS項目集成Lua
IOS項目集成Lua的方式與Mac大同小異,順便補充一句,Lua本質(zhì)上是一個c程序,任何平臺下面集成相應c庫的方法都是適用的。
這里我主要寫一些注意事項吧:
1.我們剛才編譯好的macosx庫只能給mac程序用,ios需要單獨編譯(當然,windows和linux也需要再單獨編譯,編譯方法見下載的lua-5.2.3/doc/readme.html)
2.編譯ios可以通過添加一個static library,然后把所有的Lua文件添加到這個Library里面。最后,讓主項目依賴這個Library就可以了。
3.直接使用luaL_dofile(lua_state, “hello.lua”)是行不通的,因為ios項目的資源路徑在一個沙盒里。我們必須取得全路徑才可以訪問到這個hello.lua文件。以cocos2d-x為例,我們可以使用下面的代碼獲得hello.lua的全路徑,然后再傳遞給Lua虛擬機。
Android項目集成Lua
Android集成Lua需要使用Android.mk把Lua打包成一個靜態(tài)庫,然后在項目里面包含這個Lua模塊。具體的做法可以參考cocos2d-x。
標簽:宜賓 武漢 黑龍江 延邊 新余 嘉峪關(guān) 張掖 江西
巨人網(wǎng)絡(luò)通訊聲明:本文標題《Lua教程(一):在C++中嵌入Lua腳本》,本文關(guān)鍵詞 Lua,教程,一,在,C++,中,嵌入,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。