不同版本的 google protobuf 可以一起工作吗?

Posted

技术标签:

【中文标题】不同版本的 google protobuf 可以一起工作吗?【英文标题】:Different versions of google protobuf work together? 【发布时间】:2018-12-20 09:20:46 【问题描述】:

我正在编写一个 C++ 客户端/服务器应用程序。服务器是用 VS 2015 构建的,而客户端是用 VS 2010 构建的。两者都是用 C++ 编写的。我正在尝试使用 google 的 protobuf 进行序列化和解析,以便在服务器和客户端之间进行数据交换。 VS 2015 使用 protobuf 的一个版本(在我的情况下为 3.5)生成的代码,而 VS 2010 使用另一个版本(在我的情况下为 2.6.1)生成的代码。我的问题是:数据可以在一侧序列化并在另一侧进行解析吗?我在两边都使用相同的 .proto 文件。但由于上述原因,必须使用不同版本的 protobuf 来生成代码。

【问题讨论】:

【参考方案1】:

是的,protobuf 二进制格式在所有库版本和语言之间兼容。

较新的版本确实添加了一些新功能(例如oneof 字段和proto3 语法),但如果您的.proto 文件与旧版本库一起编译,则完全兼容。

【讨论】:

感谢您的回答。很高兴知道它也适用于不同的语言。我的代码中的其他地方有错误,这让我相信不同版本的 probtobuf 之间可能存在不兼容。不,我的代码现在运行非常流畅。第一次使用 protobuf 确实是一种魅力。强烈建议通过网络进行数据交换。向 Google 致敬!

以上是关于不同版本的 google protobuf 可以一起工作吗?的主要内容,如果未能解决你的问题,请参考以下文章

Google protobuf解析消息逻辑的版本问题

在Windows上一键编译各种版本的Protobuf

在Windows上一键编译各种版本的Protobuf

我们可以更改钴的 protobuf 版本吗?

Windows下编译protobuf v3.3.0

基于google protobuf的gRPC实现