用LuaBridge为Lua绑定C/C++对象

本文介绍了使用LuaBridge库将C/C++对象绑定到Lua的详细过程,包括学习笔记和测试代码,旨在总结Lua绑定C/C++对象的方法、原理及其实践。
摘要由CSDN通过智能技术生成

最近为了总结Lua绑定C/C++对象的各种方法、第三方库和原理,学习了LuaBridge库为Lua绑定C/C++对象,下面是学习笔记,实质是对该库的Reference Manual基本上翻译了一遍,学习过程中测试代码,放在我的github上。

LuaBridge的主要特点
     源码只有头文件,没有.cpp文件,没有MakeFile,使用时只需一个#include即可。
     支持不同的对象生命周期管理模式。
     对Lua栈访问方便并且是类型安全的(type-safe)。
     Automatic function parameter type binding.
     Easy access to Lua objects like tables and functions.
     LuaBridge的API是基于C++模板元编程(template metaprogramming)的。在编译时这些模板自动生成各种Lua API调用,从而可以再Lua脚本中使用C++程序中的类和函数。为了能在C++中使用Lua的数据,比如number,string,table以及方便调用Lua的函数,使用LuaBridge中的LuaRef类,可以方便做到。

LuaBridge设计原则
     由于LuaBridge的设计目标尽可能方便使用,比如只有头文件、没有用到高级C++的语法、不需要配置。因此LuaBridge性能虽足够好,但并不是最好的,比如OOLua(https://code.google.com/p/oolua/)执行效率就比它好,并且它也不像LuaBind(http://www.rasterbar.com/products/luabind.html)那样功能全面。LuaBridge不支持下面特性:
     枚举型常量
     不支持8个以上的函数或方法的调用
     重载函数、方法和构造函数(Overloaded functions, methods, or constructors)
     全局变量(变量必须被包装在命名空间里)
     自动地转换STL容器类型和Table
     在Lua中继承C++类(Inheriting Lua classes from C++ classes)。
     Passing nil to a C++ function that expects a pointer or reference
     Standard containers like std::shared_ptr

在Lua访问C++
     为了在Lua中使用C++中的数据和函数,LuaBridge要求任何需要使用的数据的都需要注册。LuaBridge可以注册下面五种类型数据:
     Namespaces  一个Lua table包含了其他注册信息
     Data  全局变量或静态变量、数据成员或静态数据成员
     Functions  一般函数、成员函数或静态成员函数
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值