经过上面的步骤,在Windows系统上的话,你会得到tolua++.exe和tolua.lib,前者是一个辅助工具,用来将.pkg文件(下面将会讲到)转换成源代码,而后者则是我们需要在自己工程中加入的函数库。
下面开始正式使用tolua++。
一开始,我们并不需要特别注意,按照自己的需要来撰写完完全全的C++代码,假设我们有一个基于控制台的项目,名为mytest,设置好项目属性,包含必要的库(包括lua和tolua++),添加如下代码:
// file: UsingIt.h#include <iostream>class my_class{public: void greet() { std::cout << “Hello World!” << std::endl; }};
下面撰写我们的.pkg文件:
// file: mylib.pkg$pfile “UsingIt.h”class my_class{ my_class(); ~my_class(); void greet();};使用tolua++生成胶水函数实CPP文件:
tolua++ –n mylib –o mylib.cpp mylib.pkg这条命令的意思是:使用tolua++程序,从mylib.pkg生成源代码并输出到mylib.cpp,而-n参数则是用来指定包名称的(lua 中package name)。你会得到mylib.cpp,文件,其中包含一个很重要的函数:int tolua_<package name>_open(lua_State*)。"package name”就是用-n指定,这里就是 int tolua_mylib_open(lua_State*),它的功能就是将你在.pkg文件中所撰写的类、函数接口等注册给lua,这个函数是需要你自己调用的。
回到我们的mytest项目,将上面得到的mylib.cpp文件加入到项目中,添加一个新文件Main.cpp:
// file: Main.cpp#include <iostream>#include <tulua++.h>extern “C” {#include <lua.h>#include <luaxlib.h>}#include “UsingIt.h”int main(){ lua_State* L = lua_open(); luaL_openlibs(); tolua_mylib_open(L); // 打开mylib luaL_dofile(L, “mytest.lua”); // 执行脚本文件 lua_close(L); return 0;}mytest.lua脚本文件内容:
local my = my_class()my:greet()
好了,编译并运行你的mytest程序吧,你将看到 Hello World! 出现在你的屏幕上! 就说到这里了,更深入的使用请参考tolua++的文档,有一点需要注意的是,tolua++并不支持导出虚函数类供lua代码派生实现。