文件名称:LuaBind 源码 (Lua增强库)
文件大小:318KB
文件格式:ZIP
更新时间:2014-09-24 12:09:10
lua LuaBind
1 介绍
LuaBind 是一个帮助你绑定C++和Lua的库.她有能力暴露 C++ 函数和类到 Lua . 她也有
能力支持函数式的定义一个Lua类,而且使之继承自C++或者Lua. Lua类可以覆写从 C++ 基类
继承来的虚函数. 她的目标平台是Lua 5.0 ,不能支持Lua 4.0 .
她利用模板原编程技术实现.这意味着,你不需要额外的预处理过程去编译你的工程(编译器
会替你完成全部的工作).这还意味着,你也不需要(通常)知道你注册的每一个函数的精确的签名.
因为,LuaBind库会在编译时生成所需的代码.这样做的不利点是,编译时间会随着需要注册的
文件的数目增加而增加.因此建议你把所有的需要注册的东西放到一个cpp文件里面.
LuaBind 遵循 MIT 协议 发布.
我们非常希望听说有工程使用了LuaBind, 请告诉我们,如果你的工程使用了LuaBind.
主要的反馈渠道是 LuaBind邮件列表 .在 irc.freenode.net还可以找到一个IRC频道 #luabind .
2 功能
LuaBind支持:
* 重载*函数
* C++类导入Lua
* 重载成员函数
* 操作符
* 属性
* 枚举
* Lua函数导入C++
* Lua类导入C++
* Lua类(单继承)
* 从Lua或C++类继承
* 覆写C++类的虚函数
* 注册类型间隐式的类型转换
* 最好匹配式签名匹配
* 返回值策略和参数策略
3 可移植性
LuaBind 已经通过下面的编译器环境的测试:
Visual Studio 7.1
Visual Studio 7.0
Visual Studio 6.0 (sp 5)
Intel C++ 6.0 (Windows)
GCC 2.95.3 (cygwin)
GCC 3.0.4 (Debian/Linux)
GCC 3.1 (SunOS 5.8)
GCC 3.2 (cygwin)
GCC 3.3.1 (cygwin)
GCC 3.3 (Apple, MacOS X)
GCC 4.0 (Apple, MacOS X)
LuaBind被确认不能在 GCC 2.95.2 (SunOS 5.8) 下工作.
Metrowerks 8.3 (Windows) 可以编译LuaBind,但是通不过常量测试.这就意味着常量
成员函数被视同非常量成员函数.
如果你测试了LuaBind和其他未列出的编译器的兼容性,请告诉我们你的结果.
4 构建LuaBind
为了抑制LuaBind的编译时间最好是将其编译为一个库. 这意味着你要不编译并连接LuaBind
库要不就添加其所有源码到你的工程里面.你必须确保LuaBind目录在你的编译器包含目录中.
LuaBind需要Boost 1.32.0 或者 1.33.0 (只需要头文件即可). LuaBind还需要Lua.
官方的构建LuaBind的方式是通过 Boost.Build V2 . 为此,你需要设置两个环境变量:
BOOST_ROOT 指向你的Boost安装目录
LUA_PATH 指向你的Lua目录.编译系统将假定包含文件和库文件分别放在
$(LUA_PATH)/include/ 和 $(LUA_PATH)/lib/.
为了向后兼容性,LuaBind在根目录下还保留了一个makefile.这可以构建库和测试程序.如果
你正在使用一个UNIX系统(或者 cygwin),他们将使得构建LuaBind静态库变得很简单.如果
你正在使用 Visual Studio ,很简单的包含 src 目录下的文件到你的工程即可.
构建LuaBind的时候,你可以设定一些选项来使得库更加符合你的需求.特别重要的是,你的应用
程序也必须使用和库一样的设定.可用的选项的介绍参见 Build options 章节.
如果你希望改变缺省的设置,推荐你通过修改命令行参数的方式来实现.(在Visual Studio
的工程设置项里面).
5 基本使用
为了使用LuaBind, 你必须包含 lua.h 和 LuaBind 的主要头文件:
extern "C"
{
#include "lua.h"
}
#include