文章分类 -  lua

lua
C++与Lua交互(三)
摘要:现在让我们再深入一点,去探索一下如何调用lua的函数、表。Lua与宿主通讯的关键——栈lua是个动态脚本语言,它的数据类型如何映射到C++这种静态类型语言中?lua是有GC机制的,这与C++手动管理内存相悖。如何解决这些问题呢?lua用一个抽象的栈与宿主语言交互,栈中的每一条记录都可以保存lua值。... 阅读全文

posted @ 2015-01-27 14:40 &大飞 阅读(179) 评论(0) 推荐(0) 编辑

C++与Lua交互(二)
摘要:现在,我们一起探索一下如何将lua寄宿到C++中。宿主的实现我们在LuaWithCPPTest项目下,查看Source.cpp代码如下:#include #include #include using namespace std;extern "C"{ #include #includ... 阅读全文

posted @ 2015-01-27 14:39 &大飞 阅读(336) 评论(0) 推荐(0) 编辑

C++与Lua交互(一)
摘要:引言之前做手游项目时,客户端用lua做脚本,基本所有游戏逻辑都用它完成,玩起来有点不爽,感觉“太重”了。而我又比较偏服务端这边(仅有C++),所以热情不高。最近,加入了一个端游项目,客户端和服务器都用了lua,各种玩法是让我眼界大开。在此,写下自己的心得与体会,希望能与大家共同探讨进步。环境搭建lu... 阅读全文

posted @ 2015-01-27 14:38 &大飞 阅读(288) 评论(0) 推荐(0) 编辑

Lua 中写 C 扩展库时用到的一些技巧
摘要:Lua 中写 C 扩展库时用到的一些技巧(转)通常,C 扩展库中 C 代码会有一些数据要放在 lua 状态机中。Lua 提供的方案是放在它的注册表中。如文档所言,因为 Lua 的注册表是全局共享的,选择 key 的时候就要千万小心了。整数 key 已经被 reference 系统用掉了,一般我们会采... 阅读全文

posted @ 2015-01-27 13:32 &大飞 阅读(381) 评论(0) 推荐(0) 编辑

Lua的C++封装
摘要:前段时间由于公司项目需要,做了LUA的C++封装,为此看了LuaPlus(感觉过于庞大,挺混乱的..)跟LuaTinker(一个韩国人写的,只有两个代码文件,实现了大多数需要的功能)的代码,在实现LUA与C++的交互中最重要的功能莫过于实现在LUA中注册任意类型的C++函数和类,现将自己所得到的一些... 阅读全文

posted @ 2015-01-27 12:46 &大飞 阅读(649) 评论(0) 推荐(0) 编辑

Lua中的模块与包
摘要:前言从Lua5.1版本开始,就对模块和包添加了新的支持,可是使用require和module来定义和使用模块和包。require用于使用模块,module用于创建模块。简单的说,一个模块就是一个程序库,可以通过require来加载。然后便得到了一个全局变量,表示一个table。这个table就像是一... 阅读全文

posted @ 2015-01-24 16:24 &大飞 阅读(320) 评论(0) 推荐(0) 编辑

protobuf-2.5.0 报package directory 'google/protobuf/compiler' does not exist 解决办法
摘要:执行python setup.py install 时报错:error: package directory 'google/protobuf/compiler' does not exist解决办法:在google/protobuf/下创建compiler文件夹再次在protobuf文件夹下运行:... 阅读全文

posted @ 2015-01-22 12:25 &大飞 阅读(2231) 评论(0) 推荐(0) 编辑

用protoc-gen-lua生成PB的lua代码
摘要:所需文件安装包:python-2.7.2.msipython安装程序 http://www.python.org/getit/LuaForWindows_v5.1.4-45.exelfw安装程序 http://code.google.com/p/luaforwindows/downloads/lis... 阅读全文

posted @ 2015-01-22 10:40 &大飞 阅读(565) 评论(0) 推荐(0) 编辑

共享 lua state 中的数据
摘要:今天和倩女幽魂的同事讨论一个问题:他们的游戏 client 中,有大量策划填写的表格直接导入 lua state 中的大量数据。大约有 100M 以上。这样,如果玩家在一台机器上启动多个 client ,就会占用大量的内存。而这些数据,一旦加载进 lua ,就不会再修改,且每个 client 中数据... 阅读全文

posted @ 2015-01-20 14:13 &大飞 阅读(505) 评论(0) 推荐(0) 编辑

Lua数据结构 — lua_State(六)
摘要:作者:罗日健前面各种Lua的数据类型基本都说得差不多了,剩下最后一个数据类型:lua_State,我们可以认为是”脚本上下文”,主要是包括当前脚本环境的运行状态信息,还会有gc相关的信息。Lua这门语言考虑了多线程的情况,在脚本空间中能够开多个线程相关脚本上下文,而大家会共用一个全局脚本状态数据,如... 阅读全文

posted @ 2015-01-20 01:34 &大飞 阅读(7890) 评论(0) 推荐(0) 编辑

Lua数据结构 — Udata(五)
摘要:作者:罗日健Udata负责存储userdata的数据,这部分其实很简单,但是为了保证系列文章的完整性,还是写一篇出来补全。下面是Udata的数据结构:意义:CommonHeader:和与TValue中的GCHeader能对应起来的部分metatable:userdata的元表,和table的元表一样... 阅读全文

posted @ 2015-01-20 01:33 &大飞 阅读(766) 评论(0) 推荐(0) 编辑

Lua数据结构 — 闭包(四)
摘要:作者:罗日健前面几篇文章已经说明了Lua里面很常用的几个数据结构,这次要分享的也是常用的数据结构之一 –函数的结构。函数在Lua里也是一种变量,但是它却很特殊,能存储执行语句和被执行,本章主要描述Lua是怎么实现这种函数的。在脚本世界里,相信闭包这个词大家也不陌生,闭包是由函数与其相关引用环境组成的... 阅读全文

posted @ 2015-01-20 01:31 &大飞 阅读(504) 评论(0) 推荐(0) 编辑

Lua数据结构 — Table(三)
摘要:作者: 罗日健前面(一)、(二)里面其实已经把一些常用的数据类型(数值、布尔、字符串)说明了,这次要描述的是Table,Table在Lua里是一种常用的数据类型,是Lua里的精髓之一,其效率必须得到保证,而实现这种支持任意类型key和value的Table也是较为复杂的。一, Table的设计思想:... 阅读全文

posted @ 2015-01-20 01:30 &大飞 阅读(2565) 评论(0) 推荐(0) 编辑

Lua数据结构 — TString(二)
摘要:作者:罗日健存储lua里面的字符串的TString数据结构:(lobject.h 196-207)其它结构中也会有L_Umaxalign dummy这个东西,来看看L_Umaxaliagn:从字面意思上就是保证内存能与最大长度的类型进行对齐,事实上也是做这件事,这里感觉lua想给各种不同设备做一种嵌... 阅读全文

posted @ 2015-01-20 01:29 &大飞 阅读(681) 评论(0) 推荐(0) 编辑

Lua数据结构 — TValue(一)
摘要:作者:罗日健数据结构的设计,在一定程度上奠定了整个系统的设计,所以决定写一个对Lua主要数据结构的分析文章,本来打算写一篇就好了,但是每个数据类型其实都有点复杂,一篇的话篇幅太长,所以就拆开几篇来写了。为什么是从TValue说起,TValue是实现Lua弱数据类型的主要数据结构,不但在脚本中的值使用... 阅读全文

posted @ 2015-01-20 01:28 &大飞 阅读(806) 评论(0) 推荐(0) 编辑

Step By Step(Lua数据结构)
摘要:Lua中的table不是一种简单的数据结构,它可以作为其它数据结构的基础。如数组、记录、线性表、队列和集合等,在Lua中都可以通过table来表示。 1. 数组: 使用整数来索引table即可在Lua中实现数组。因此,Lua中的数组没有固定的大小,如: a = {} for i = 1, 100... 阅读全文

posted @ 2015-01-20 01:08 &大飞 阅读(241) 评论(0) 推荐(0) 编辑

在lua环境中使用protobuf
摘要:最近在cocos2dx的项目中,需要在LUA脚本层使用protobuf协议。官方已经推出了很多种语言的版本。但唯独LUA版本不全。于是开始研究protobuf在LUA下的实现,将完整的过程记录了下来,希望对其它人能有所帮助。1、下载protoc-gen-lua可以通过git从服务器(https://... 阅读全文

posted @ 2015-01-13 15:30 &大飞 阅读(1315) 评论(0) 推荐(0) 编辑

lua5.1中的setfenv使用
摘要:setenv是在lua5.1中有的改变函数作用域的函数。 用法是setenv(func or number,tbl),第一个参数可以是数字也可以是函数,数字1表示当前的作用域,2表示上一层的作用域,特殊情况0,setfenv changes the environment of the runnin 阅读全文

posted @ 2014-09-15 07:14 &大飞 阅读(697) 评论(0) 推荐(1) 编辑

Step By Step(Lua-C API简介)
摘要:Lua是一种嵌入式脚本语言,即Lua不是可以单独运行的程序,在实际应用中,主要存在两种应用形式。第一种形式是,C/C++作为主程序,调用Lua代码,此时可以将Lua看做“可扩展的语言”,我们将这种应用称为“应用程序代码”。第二种形式是Lua具有控制权,而C/C++代码则作为Lua的“库代码”。在这两... 阅读全文

posted @ 2014-09-12 17:37 &大飞 阅读(236) 评论(0) 推荐(0) 编辑

Lua 常用函数
摘要:lua_getallocflua_Alloc lua_getallocf (lua_State *L, void **ud);返回给定状态机的内存分配器函数。如果ud不是NULL,Lua 把调用lua_newstate时传入的那个指针放入*ud。lua_getfenvvoid lua_getfenv... 阅读全文

posted @ 2014-09-11 15:38 &大飞 阅读(1935) 评论(0) 推荐(1) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示