关于protobuf的一些问题解决思路汇总

一、外界符号问题

> 这种情况一般是没有导入LIB库,先去 项目->属性->链接器->常规 选择附加库目录,把protobuf的lib库目录引入进来,一般都会和项目放在一切,然后在VS项目中导入,最后在代码中导入LIB

#pragma comment(lib,"Lib\\libprotobuf.lib")
#pragma comment(lib,"Lib\\libprotobuf-lite.lib")

二、库不匹配

> 一般这种情况都是编译项和你编译的protobuf的库版本不匹配,debug的用debug模式,Release版本的选择Release版本,另外就是运行库不匹配  需要去选择对应的允许库  项目->属性-> C/C++ -> 代码生成 然后选择运行库,选择对应的值,例如我的是我当前的值是MTd(不匹配的),我应该去选择对应的MT(匹配值)

这里写图片描述

以上问题均属于C++

protobuf的使用问题

一、解析的问题

C#的会有一个主要问题是 TAG ZERO 标签为0的情况,这种情况一般是消息里面含有不全是proto信息,有其他的二进制掺杂,一般情况都是例如 64字节的消息用了 1024字节来存,造成剩余空间,protobuf并不会去截取,或许可以截取(没有找到具体的反序列API),这时候我们就得需要自己去重新组装信息,简单暴力点的就是直接把消息后面的截取掉,用新的容器来装,保证长度一致,再去解析。以下测试代码

这里写图片描述

二、C++解析消息问题

暂时没有发现什么问题

三、使用自己的长度解析错误?

目前我还不清楚这个问题具体要表达的是什么,信息是长度不一致吗?还是我需要在二进制消息上在包装一层base64,防止丢失精度?不太清楚这个问题,这是偶然性的,不会一直出现,等后续发现和解决后再记录。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值