问题描述
我有一个使用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)。