Google 协议缓冲区 - protoc-c 和 protoc 之间的二进制兼容性
Posted
技术标签:
【中文标题】Google 协议缓冲区 - protoc-c 和 protoc 之间的二进制兼容性【英文标题】:Google protocol buffers - Binary compatibility between protoc-c and protoc 【发布时间】:2017-03-13 22:38:49 【问题描述】:我有以 proto2 格式编写并由 protoc-c 编译器编译的 C 代码。我想知道的是该代码是否与“protoc”编译器生成的序列化/反序列化代码二进制兼容(这也恰好理解 protobuf 的第 3 版)?由于某种原因,我无法得到这个问题的明确答案。我想知道的原因是因为版本 3 和版本 2 之间已经存在向后兼容性问题,所以我对 protoc-c 和 protoc 工具包以及它们如何处理版本有点不确定。
谢谢!
【问题讨论】:
【参考方案1】:是的,这两种实现应该是兼容的——您可以用一种实现序列化消息并用另一种实现成功地解析它们。我没有亲自尝试过 protobuf-c,但根据它的描述,它只是相同协议缓冲区线格式的另一种实现。
您提到了syntax = "proto2"
和syntax = "proto3"
之间的区别。确实,这些是不同的,如果你想从一个迁移到另一个,你必须小心,但我认为这个问题与你关于 protobuf-c 和 Google 的 protobuf 实现之间兼容性的问题是正交的。
【讨论】:
以上是关于Google 协议缓冲区 - protoc-c 和 protoc 之间的二进制兼容性的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 中使用 MinGW 的 Google 协议缓冲区
Windows 上的 Thrift / Google 协议缓冲区