您的位置:首页 > 编程语言 > Lua

lua与C++交互

2017-10-18 17:18 369 查看

luaplus

LuaPlus是Lua的C++增强,也就是说,LuaPlus本身就是在Lua的源码上进行增强得来的。用它与C++进行合作,是比较好的一个选择。

使用LuaPlus在C++项目中集成Lua脚本

luaJIT

luajit ffi

luajit ffi 小结

nua

LuaBind

LuaBind 是一个帮助你绑定C++和Lua的库.她有能力暴露 C++ 函数和类到 Lua . 她也有能力支持函数式的定义一个Lua类,而且使之继承自C++或者 Lua. Lua类可以覆写从 C++ 基类继承来的虚函数. 她的目标平台是Lua 5.0 ,不能支持Lua 4.0 .
她利用模板原编程技术实现.这意味着,你不需要额外的预处理过程去编译你的工程(编译器会替你完成全部的工作).这还意味着,你也不需要(通常)知道你注册的每一个函数的精确的签名.因 为,LuaBind库会在编译时生成所需的代码.这样做的不利点是,编译时间会随着需要注册的文件的数目增加而增加.因此建 议你把所有的需要注册的东西放到一个cpp文件里面.


LuaBin支持:

* 重载自由函数

* C++类导入Lua

* 重载成员函数

* 操作符

* 属性

* 枚举

* Lua函数导入C++

* Lua类导入C++

* Lua类(单继承)

* 从Lua或C++类继承

* 覆写C++类的虚函数

* 注册类型间隐式的类型转换

* 名匹配

* 返回值策略和参数策略

BIN_LuaBind

BIN_LuaBind是一个和luabind、tolua++类似的库,提供了简洁的C/C++到lua的绑定机制,但与之不同的是BIN_LuaBind比他们更安全:lua层不在直接依赖于C/C++层指针,避免野指针引起宕机。除此之外,BIN_LuaBind对Lua提供了对lua_state,user data和table的抽象类,在C++端能方便的操作lua

LuatinkerE

Lua-C++绑定库”lua_tinker”的C++14和Lua 5.3扩展版本。

使用大量C++14特性Variadic Template 和 index_sequence, SFINAE enable_if 和 type_traits, tuple, function, forward_ref, decltype(auto)。

通过vc2015,gcc5.0,clang3.6编译

new feature 新特性一览:

导入lua的函数,现在支持任意多的参数

支持的read/push的元素类型增加std::string,std::function,lua_function_ref,stl容器,std::shared_ptr对象

支持最多16个参数的非精确匹配的函数重载(c++类型downcast到lua类型后生成签名), 支持普通函数、类成员函数、构造函数

支持函数默认参数及带默认参数的重载函数的匹配

移除int64相关函数,使用lua5.3的luaInterager来替代

支持调用lua函数时返回多个返回值用tuple包裹

支持通过宏定义打开类型一致性检查和常量类成员函数检查

支持通过宏定义允许已注册的shared_ptr对象调用类成员函数

支持类静态函数注册

支持类静态变量注册

支持property注册

支持继承多个父类,查找时根据顺序依次查找,深度优先

支持注册namespace及内的函数/变量/枚举/类

支持注册嵌套的类

支持在lua中扩展已经注册的类

支持在lua中注册一个新类继承已经注册的类

luawrapper

eluna

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lua