1

我有一个使用 proto2 和 libprotobuf2.x 的遗留应用程序。还有另一个应用程序应用程序,我希望该应用程序与 proto3 通信。

我检查了可能的解决方案,并且该线程中的讨论 说 libprotobuf3.x 提供与 proto2 的兼容性。

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

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

4

1 回答 1

1

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

兼容proto2意味着支持 Proto 2语法( syntax = "proto2")。在线上也proto3与二进制兼容proto2

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

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

于 2020-09-10T16:47:55.610 回答