加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Lua与C/C++的交互

发布时间:2020-12-14 22:15:23 所属栏目:大数据 来源:网络整理
导读: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与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文件。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读