好奇的探索者,理性的思考者,踏实的行动者。
Table of Contents:
对比了一下tolua.h和tolua++.h后,tolua++.h中比tolua.h中多了几个关于tolua_tocppstring的方法。其他大部分的方法都是一样的。
1. tolua依赖lua,所以先下载lua进行编译,然后把liblua.a和相应的头文件放到指定目录
2. 编译tolua,会编译两个东西,一个是libtolua.a的静态库。一个是tolua的可执行程序程序,负责把pkg转成c/c++,这个 c/c++ 源文件就是导出的可供 lua 调用的代码。
lua的头文件
tolua的头文件
lua的静态库liblua.a
tolua的静态库libtolua.a
.pkg
文件导出生成.cpp
文件其中.pkg
文件中的内容和要导出的cpp类的头文件中的内容基本一致
要注意的是要在文件头引入头文件,然后把 public 关键字去掉。
所有公有的函数或数据都可以导出,如果不想导出某个函数,则在package文件中不要定义就可以了。
cpp中将cpp对象注册到lua栈中,lua中调用cpp对象的方法
//cpp文件
int main (void)
{
int tolua_tfunction_open (lua_State*);
lua_State* L = luaL_newstate();
luaL_openlibs(L);
// 此方法是pkg文件生成的cpp文件中的方法,作用是将cpp类的属性和方法导入到lua环境栈中
// 见:tfunctionbind.cpp
tolua_tfunction_open(L);
luaL_dofile(L,"tfunction.lua");
lua_close(L);
return 0;
}
//lua文件
local p = Point:new(1,2)
local x, y = p:get()