文章参照自: http://www.cppblog.com/converse/archive/2005/12/27/2199.aspx#Post
介绍
tolua是一个第三方的软件包,可以为Lua提供面向对象的特性,这样我们就可以使用在Lua脚本中访问c/c++语言库提供的类和函数.
下载地址: http://webserver2.tecgraf.puc-rio.br/~celes/tolua/tolua-5.2.4.tar.gz
官方教程: http://webserver2.tecgraf.puc-rio.br/~celes/tolua/tolua-3.2.html
原理
tolua组成部分有三个:
- tolua: 可执行程序
- tolua.h: 头文件
- libtolua.a: tolua的静态库文件
编译安装
- 下载解压后make会报错, 修改./src/bin/Makefile文件, 生成$(T), $(T_D)的编译项加上 -ldl 和 -lm, 然后再到根目录执行make.
- Makefile没有提供install选项,需要自行copy. 将./bin/下面的两个可执行文件cp到/usr/bin/目录, 将./include/下的头文件cp到/usr/include/目录下,将./lib/下的静态文件cp到/usr/lib/和/usr/lib64目录下.
使用
使用tolua有以下步骤:
- 编写c/c++文件.
- 编写.pkg文件,填写需要导出的c/c++接口.
- 使用tolua可执行程序将pkg接口导出成LuaVm可调用的栈交互c/c++文件.
- 将第三步生成的文件和其他c/c++文件一起编译生成最终的可执行程序.
安装包解压后,在src/tests/目录下会有很多例子,而且提供了Makefile一键生成所有可执行文件, 这里以里面的tfunction文件作为例子介绍生成过程.
- tolua -o tfunctionbind.cpp tfunction.pkg
- g++ -o tfunction tfunction .cpp -ldl -llua -ltolua
执行 tfunction可执行文件,即可看到tfunction.lua脚本执行的结果.