我可以将 proto2 生成的代码存根与 libprotobuf3.x 一起使用吗?

Can I use proto2 generated code stubs with libprotobuf3.x?

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

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

这是否意味着我可以使用相同的 proto(与 proto2)和相同的代码存根 pb.h/pb.cpp 为 proto2 生成并且 link 我的遗留应用程序与 libprotobuf3.x 相反,它会像一个魅力?

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

不,您不能 link .pb.* 使用 protoc 2.0 生成的文件针对 libprotobuf 3.0。 与任何共享库一样,主版本号的增加意味着重大 API 更改。

proto2 的兼容性意味着支持 Proto 2 语法 (syntax = "proto2")。另外 proto3 是 binary-compatible 和 proto2 在电线上。

I don't want to update legacy protos to proto3 as it might require major refactoring in the legacy code.

很有可能,如果你 re-generate 你的 .pb 文件 protoc 3 并重新编译,它无需重构就可以工作(默认语法仍然是 proto2)。