LuaTinker 的作者是Kwon-il Lee韩国人写的,最新的版本是0.2.C,这个C++ wrapper For Lua能够方便和
快捷与C/C++通信,LuaTinker参考了luabind和luaplus的特征写的,虽然没有bindlua和luaplus这本强大
和提供很多功能,LuaTinker的实现只有两个文件,但是LuaTinker提供的基本能够满足大部的要求,用户
还可以对它进一步的扩充,而且用于游戏上特为方便,以下是LuaTinker使用C++结构和类的例子:
// 一个基类 struct base { base() {} const char* is_base(){ return "this is base"; } }; // 一个测试类 class test : public base { public: test(int val) : _test(val) {} ~test() {} const char* is_test(){ return "this is test"; } void ret_void() {} int ret_int() { return _test; } int ret_mul(int m) const { return _test * m; } A get() { return A(_test); } void set(A a) { _test = a.value; } int _test; }; int main() { // 注册base类型到LUA lua_tinker::class_<base>("base") .def("is_base", &base::is_base) ; // 注册test类型到LUA,注册test的成员函数和成员变量 lua_tinker::class_<test>("test") .inh<base>() // 注册继承类 .def(lua_tinker::constructor<int>()) //注册构造函数 .def("is_test", &test::is_test) // 注册成员函数 .def("ret_void", &test::ret_void) .def("ret_int", &test::ret_int) .def("ret_mul", &test::ret_mul) .def("get", &test::get) .def("set", &test::set) .def_readwrite("_test", &test::_test) // 注册成员变量 ; test g_test(11); lua_tinker::decl("g_test", &g_test); }
// Lua脚本
temp = test(4) 创建一个test类 print(temp._test) 打印test的_test成员 print(g_test) print(g_test._test) 打印g_test的成员变量_test print(g_test:is_test()) 输出信息 print(g_test:ret_int()) 返回g_test的成员变量_test
这么几句就能够方便的使用C/C++定义的结构或类