我可以在libprotobuf3.x中使用proto2生成的代码存根吗?

问题描述

我有一个使用proto2和libprotobuf2.x的旧版应用程序。我希望该应用程序可以与proto3交流。

我在thread中检查了可能的解决方案和讨论 说libprotobuf3.x提供了与proto2的兼容性。

这是否意味着我可以使用为proto2生成的相同proto(with proto2)和相同的代码存根pb.h / pb.cpp,而只需将我的旧应用程序与libprotobuf3.x链接,它将像一个魅力一样工作?

我不想将遗留的proto更新为proto3,因为它可能需要对遗留代码进行重大重构。

解决方法

否,您无法将.pb.* 2.0生成的protoc文件与libprotobuf 3.0链接。 就像任何共享库一样,主版本号的增加意味着API的重大更改。

proto2的兼容性意味着支持Proto 2 语法syntax = "proto2")。另外,proto3与线路上的proto2二进制兼容。

我不想将遗留的proto更新为proto3,因为它可能需要对遗留代码进行重大重构。

如果您使用.pb 3重新生成protoc文件并重新编译,则很有可能无需重构即可工作(默认语法仍为proto2)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...