• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

unity slua整合帅气的lua-pb解析protobuf

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

了解到lua的一个protobuf库,接口帅气,比之前用过的一些lua protobuf库要好很多,深得我心。而且能保持更新,比其他库几年没更新要放心。

 lua-pb动态解析protobuf协议,无需生成一大坨难看的预定义lua代码,要的就是这个帅气清爽。

lua-pb需要用到lpeg, luabitop和struct3个c库,因此你自己项目基本需要重新编译一遍。

我用的是slua,不熟,找slua的c代码都费了很久,结果竟然在slua工程下的build目录下找到,话说在群里随口问问竟然无一人热心解答,人心不古。

自恃高手什么的最讨厌了。

基本上,你需要slua.c这个文件,配合lua源码,加入以上3个c库,在slua.c的openlibs里注册c库接口(开头几行有注释),编译之即可,记得编译选项为MT。

如果你不熟悉这个流程,请去翻阅programming in lua中关于lua接入c库的章节。

 

编译好后,请把lua-pb工程下的pb文件夹和pb.lua拷贝到你的lua工作目录即可。

接下来你按照例子

require "protos.person"

加载一个poroto文件会遇到问题,找不到该文件。

修改一下package.path,添加路径即可。路径一般是你的lua工程目录。

大功告成,目前已成功在pc下运行。

 

实际使用中遇到一个较大的问题,该库对负数的处理并没有按照protobuf的标准,它自身解析和序列化负数是成功的,但解析其他库如c++库生成的protobuf流,则遇到负数会有问题。你需要在unpack和pack2个文件里对int32类型重写下,参考c++代码写个函数,然后将varint32的pack和unpack回调替换下。

 

ps:

lua-pb用到的struct库,更是一个帅气的c库,相见恨晚。用来解决传参问题再合适不过了。用来改造下c#,lua事件机制,有这个库代码会更帅气。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
unity面试——Lua 中 .和: 点和冒号的区别发布时间:2022-07-22
下一篇:
Lua从入门到精通发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap