Lua的面向对象封装
2015-11-05 20:02
711 查看
版权声明:本文为 西风逍遥游 原创文章,转载请注明出处 西风世界 http://blog.csdn.net/xfxyy_sxfancy
lua这款简洁优雅的语言,非常受C/C++程序员喜欢。然而lua由于太过小巧,其接口过于类似汇编,使用困难,容易出错,也让人无可奈何。
随着C++11的推进,lua逐渐出现了诸多非常有特色的面向对象封装方式,经过封装后,接口非常的简单优雅,而且操作简便,深受C++程序员的欢迎。
支持的lua版本也很广:
Rio Lua 5.1, 5.2 and 5.3 http://www.lua.org
LuaJIT 1.1.8 and 2.0 http://www.luajit.org/
安装有点困难,需要编译安装,而且他依赖几个不是很常见的库
Premake4 - 利用lua脚本的构建工具
Google Mock - 这三个是测试工具
Google Test
CppUnit
Ubuntu下还好,我是用apt-get一路安装下去的,Windows的用户可能就很悲剧了。Premake4源里面版本有点低,从网上下一个丢到usr/bin下就好:
然后到build_scripts目录下找对应的编译脚本执行就好了。
我们会在local_install目录下看到编译后的库和头文件目录
我们只需要将OOLUA_CFUNC宏将函数注册进来就可以了。
更多的DSL实现请查阅文档中的介绍,可以看出,这款lua的封装,对于使用新版C++的朋友们,非常的合适。
lua这款简洁优雅的语言,非常受C/C++程序员喜欢。然而lua由于太过小巧,其接口过于类似汇编,使用困难,容易出错,也让人无可奈何。
随着C++11的推进,lua逐渐出现了诸多非常有特色的面向对象封装方式,经过封装后,接口非常的简单优雅,而且操作简便,深受C++程序员的欢迎。
OOLua简介
这是一款非常不错的跨平台lua封装库,主要应用的是C++03 中的模板元编程能力。支持的lua版本也很广:
Rio Lua 5.1, 5.2 and 5.3 http://www.lua.org
LuaJIT 1.1.8 and 2.0 http://www.luajit.org/
安装有点困难,需要编译安装,而且他依赖几个不是很常见的库
Premake4 - 利用lua脚本的构建工具
Google Mock - 这三个是测试工具
Google Test
CppUnit
Ubuntu下还好,我是用apt-get一路安装下去的,Windows的用户可能就很悲剧了。Premake4源里面版本有点低,从网上下一个丢到usr/bin下就好:
sudo apt-get install google-mock sudo apt-get install libgtest-dev sudo apt-get install libcppunit*
然后到build_scripts目录下找对应的编译脚本执行就好了。
我们会在local_install目录下看到编译后的库和头文件目录
使用
OOLua库的使用非常简单,甚至他能自动将我们的C/C++函数转换成lua能调用的形式。我们只需要将OOLUA_CFUNC宏将函数注册进来就可以了。
#include <stdio.h> #include "oolua/oolua.h" void say(char const* input) { printf("%s\n", input); } OOLUA_CFUNC(say, l_say) void hello_minimalist_function() { using namespace OOLUA; //NOLINT(build/namespaces) Script vm; set_global(vm, "say", l_say); run_chunk(vm, "say('Hello Lua')"); } int main(int argc, char const *argv[]) { hello_minimalist_function(); return 0; }
文档
这个项目我觉得做的真的非常好,这是一个用C++元编程实现便捷操作的良好典范,而且更为重要的是,文档非常齐全,项目目录下就带有doxygen风格的HTML文档,查看起来非常方便。更多的DSL实现请查阅文档中的介绍,可以看出,这款lua的封装,对于使用新版C++的朋友们,非常的合适。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- 详解Lua中的表的概念及其相关操作方法
- Lua编程示例(二):面向对象、metatable对表进行扩展
- C#中面向对象编程机制之多态学习笔记
- 把Lua编译进nginx步骤方法
- Lua脚本自动生成APK包
- Lua中的元表(metatable)、元方法(metamethod)详解
- Lua中的metatable介绍
- Lua中ipair和pair的区别
- Lua中的函数精讲笔记
- 浅谈Lua的面向对象特性
- 详解Lua中的变量相关知识点
- Lua脚本语言入门笔记
- Lua脚本调用外部脚本
- 详解Lua中的if语句的使用方法