项目引入lua

本文介绍了将lua和luna用于gameserver项目中的经验,包括lua实现配置文件读取、C++与lua交互以及lua内存管理。同时,记录了在lua5.3.4编译及luna集成过程中遇到的问题,如gcc升级、动态库定位等。
摘要由CSDN通过智能技术生成
2017/09/23
这周 lua luna 编译成dll 供gameserver使用
寻宝使用经验丹部分 lua实现,


1 用数据库字段控制 是否重新加载lua代码
2 lua main里面存lua里面的所有模块 全局的 供不同的部分 调用
3 luaconst里面存 c++里面的常量 或者一些公共指针
4 c++调lua通过lua_call_table_function
5 lua里面调c++通过 传进去的变量 可以是指针 调用c++中已经声明给lua的方法
6 配置文件cfg读取通过lua读 可以随时更改随时读
7 lua path第一次添加一次后面不加 通过判断模块是否nil
8 gmatch匹配解析文件
9 :参数比.要多一个
10 tonumber string-int table.insert如果表为空会失败
11 __gc(){} 需要写 不要让lua清理 内存管理还是c++来做


现在问题是项目太大 如何有效合理的移植c++到lua  只能先部分 以后的部分用lua写 之前的先不动




lua的垃圾回收
collectgarbage collect 收集一次,count 查看现在有多少内存占用
可以看到所有local的变量或者表,都会在执行collect前后 消失
但是未声明为local的则没有,
需要在收集之前将非local的表置为nil 然后调用collect的话,内存就回收了


lua自己会定期调用collect的,我们不必手动调用 注意非local置nil就行了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值