zoukankan      html  css  js  c++  java
  • unity slua整合帅气的lua-pb解析protobuf

    了解到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事件机制,有这个库代码会更帅气。

  • 相关阅读:
    SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSAS 系列
    微软BI 之SSRS 系列
    微软BI 之SSRS 系列
    配置 SQL Server Email 发送以及 Job 的 Notification通知功能
  • 原文地址:https://www.cnblogs.com/flytrace/p/7429983.html
Copyright © 2011-2022 走看看