Lua与C/C++的交互

lua 从 http://code.google.com/p/luaforwindows/ 取得
LuaTinker 可以从 http://download.csdn.net/download/esrrhs/3838889 取得
tolua++ 可以从 http://www.codenix.com/~tolua/ 取得

关于Lua与C/C++的交互
C/C++调用Lua的函数还是比较简单的,可以参考lua tinker的实现。
Lua调用C/C++的函数如果用最原始的方式有很大限制,只能调用类型为
typedef int (*lua_CFunction) (lua_State *L);
的函数,如果想调用任意类型的函数甚至C++的类成员函数就需要进行一些封装,有一些现成的库已经帮我们实现了。我试下来比较好用的就是lua tinker和tolua++。

lua tinker
license未知,官网没有找到,可以从这里下载到http://download.csdn.net/download/esrrhs/3838889
体积小,只有2个文件lua_tinker.h/lua_tinker.cpp
因为采用C++模板实现,绑定函数的参数个数有限制,当然可以自己扩展。
函数绑定到lua中的名称可以自定义,可以与C++中不同,例如加上特定前缀或后缀。
除了函数绑定还lua tinker还封装了函数调用,读取设置变量等操作。

tolua++
使用MIT license。官网http://www.codenix.com/~tolua/
这其实是一个工具,编写.pkg文件声明绑定的函数和类,通过tolua++.exe生成绑定代码(.cpp),然后在程序中调用生成的绑定代码来完成绑定。
需要通过下载的文件编译出tolua++.exe和一个lib,lib用来和自己的工程链接以支持绑定。
tolua++是用C实现的,因为绑定代码是通过工具分析pkg生成的,没有参数上的限制。
但限制了绑定函数在lua中的名称和C++中相同。
为了方便我将.pkg文件写成了
$#include "lua_interface.h"
$ifile "lua_interface.h"
将需要提供给lua的接口全部声明在lua_interface.h中。
当接口发生变化后,使用
tolua++.exe -n lua_interface -o lua_interface.cpp lua_interface.pkg
更新.cpp文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值