项目引入lua

来源:互联网 发布:js随机数1到10且不重复 编辑:程序博客网 时间:2024/06/15 19:33
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就行了


2017/09/27
1 lua5.3.4编译的时候需要readline/readline.h yum下不下来 直接从网页下载rpm 然后rpm安装就ok了 得到lua luac liblua.a
2 /root/lua-5.3.4/src/ 这是我的目录lua的目录
3 luna 这是一个c++ 类函数等 导出lua的一个第三方工具, 感谢luna作者
https://github.com/trumanzhao/luna
这是一篇相关的文章,
http://blog.csdn.net/lalate/article/details/51498869
4 luna里面是cmakelists.txt, 提供了跨平台编译,需要cmake,我之前没有装,
因为是内网机,yum用不了,wget也用不了,需要手动下cmake-3.2.2.tar.gz然后拖进去安装
5 luna支持两个版本 c++11 c++14 ,我选择11,但是之前的编译器还不支持 编译luna的时候出现compiler not support c++11


2017/09/28
1 gcc4.8.2 支持c++11 先安装mpc gmp mpfr然后才能安装gcc
2  /usr/bin   gcc g++ c++都软链到新的 /usr/local/bin下面的 gcc g++ c++ which --version
3 编译选项 需要加上 -std=c++11-fpermissive(命名空间配合 使用luna报很多警告)
4 LFLAGS -L/root/luna-master/build -lluna 动态库
5 LLIB -L/root/lua-5.3.4/src -llua 静态库


2017/09/28
1 strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX查看glibcxx版本
2 glibcxx 之前的软链删掉 链到最新的
2 gcc升级了 gdb也要升级 否则无法gdb调试
3 动态库要放到/usr/lib64下面 默认位置 否则会报找不到动态库 
4 我在一台机器上面是作为编译环境的,另一台服务器上 只放可执行文件以及动态库so,
5 makefile