首先,先溫故一下c/c++調(diào)用lua的步驟:
1) 下載lua源碼包(提示:下載后,需要自行編譯,編譯后才會(huì)有相應(yīng)的lib)
2) 將編譯好的lib鏈入項(xiàng)目
3) 包含相應(yīng)的lua頭文件,如下:
#ifdef __cplusplus
extern "C" {
#endif
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
#ifdef __cplusplus
}
#endif
此處頭跟尾處的__cplusplus宏判斷是有必要的。
4) 創(chuàng)建一個(gè)lua解析器:lua_State *L; L = lua_open();
5) 調(diào)用lua庫(kù)接口:luaL_openlibs(L);打開lua庫(kù)
6) 至此,就可以使用lua相關(guān)的功能了。如:加載lua腳本(luaL_dofileL, luaFileName);等等
7) 在使用完lua后,一定要關(guān)掉lua解析器。luaL_close(L);
接下來(lái)要介紹的是相反的調(diào)用工作。即:通過(guò)lua調(diào)用c/c++相關(guān)的功能。在此就需要用到tolua++了。
在此同樣先介紹一下實(shí)現(xiàn)步驟:
1) 同樣需要先下載tolua++庫(kù)
2) 將相關(guān)的tolua++庫(kù)鏈入項(xiàng)目
3) 將需要導(dǎo)給lua腳本使用的c/c++常量、變量、宏、接口、甚至類以及其接口,整理到相應(yīng)的干凈包中。
4) 使用tolua++工具(即:.exe文件),解析干凈包。解析成功后,將自動(dòng)生成相應(yīng)的c/c++的頭文件及源碼
5) 包含同 4) 生成的頭文件,同時(shí)包含tolua++要關(guān)的頭文件
6) 明確初始化包。具體為:tolua_XXXX_open(L);
7) 此后就可以在lua腳本中使用c/c++相關(guān)的功能了。
至此c/c++與lua間的相互調(diào)用就全部介紹完畢。
另外,以個(gè)人實(shí)際游戲框架設(shè)計(jì)的經(jīng)驗(yàn)來(lái)看,其實(shí),我們可以定義一個(gè)協(xié)議接口,將項(xiàng)目與lua的接口連接起來(lái)。這樣,我們?cè)赾/c++與lua間的調(diào)用就可以通過(guò)通用的一個(gè)或很少的幾個(gè)接口來(lái)工作。如此整個(gè)框架就搭建起來(lái)了。