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