关于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(匹配值)

关于protobuf的一些问题解决思路汇总_第1张图片

以上问题均属于C++

protobuf的使用问题

一、解析的问题

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

关于protobuf的一些问题解决思路汇总_第2张图片

二、C++解析消息问题

暂时没有发现什么问题

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

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

你可能感兴趣的:(C++,Socket)