随笔分类 - lua
摘要:转载自:http://www.cppblog.com/lxyfirst/archive/2008/10/29/65447.htmllua作为小巧精悍的脚本语言,易于嵌入c/c++中 , 广泛应用于游戏AI ,实际上在任何经常变化的逻辑上都可以使用lua实现,配合c/c++实现的底层接口服务,能够大大降低系统的维护成本。下面对lua和c/c++的交互调用做一个实例分析:lua提供了API用于在c/c++中构造lua的运行环境,相关接口如下://创建lua运行上下文lua_State* luaL_newstate(void) ;//加载lua脚本文件int luaL_loadfile(lua_St
阅读全文
摘要:转载自:http://blog.codingnow.com/2009/03/lua_c_wrapper.html把 C 里的对象封装到 lua 中,方便 lua 程序调用,是很常见的一项工作。里面最大的问题是生命期管理问题。通常有两种方案:第一:编写 C 库的时候,完全针对 lua 设计,所有对象都有 lua_newuserdata 分配内存。对象和对象之间的联系可以使用 userdata 的 环境表,把对象间的引用放在里面,使得 lua 的 gc 过程可以正常进行。第二:给 C 对象简单加一个壳。lua 的 userdata 中仅仅保存 C 对象指针。然后给 userdata 设置 gc 元
阅读全文
摘要:转载自: http://blog.codingnow.com/2013/01/binding_c_object_for_lua.html如何绑定 C/C++ 对象到 Lua 里?通常是创建一个 userdata ,存放 C/C++ 对象指针,然后给 userdata 添加元表,用 index 元方法映射 C/C++ 中的对象方法。也有另一个手段,直接用 lightuserdata 保存 C/C++ 对象指针放到 Lua 中,在 Lua 中创建一个 table 附加元表来来包装这个指针,效果是类似的。区别在于对象生命期的管理方式有所不同。就这个问题,几年前我写过一篇 blog 。绑定 C/C++
阅读全文
摘要:Lua的核心优势:1.脚本语言,不用重新编译,方便集成入大的系统。(灵活性,拥抱变化,考虑一个大系统仅仅改一个小部分,如果用C实现,那么整个工程需要重新编译)2.运行速度快。3.便于快速开发原型。(考虑ptyhon)4.跨平台5.与其他语言的集成Lua程序设计语言是一个简洁、轻量、可扩展的脚本语言,是葡萄牙语中“Luna”(月亮)的意思。Lua的目标是成为一个很容易嵌入其它语言中使用的语言。大多数程序员也认为它的确做到了这一点。很多应用程序使用Lua作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。这其中包括大话西游II、仙境传说、魔兽世界、战锤40k、博德之门、轩辕剑外传汉之云、愤怒的
阅读全文