使用tolua++调用c/c++

使用tolua++调用c/c++
首先,先温故一下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间的调用就可以通过通用的一个或很少的几个接口来工作。如此整个框架就搭建起来了。

你可能感兴趣的:(使用tolua++调用c/c++)