Могу ли я использовать заглушки кода, сгенерированные proto2, с libprotobuf3.x?

У меня есть устаревшее приложение, использующее proto2 с libprotobuf2.x. Есть еще одно прикладное приложение, с которым я хотел бы, чтобы это приложение общалось с proto3.

Я проверил возможные решения и обсуждение в этом проекте ">thread говорит, что libprotobuf3.x обеспечивает совместимость с proto2.

Означает ли это, что я могу использовать тот же proto (с proto2) и те же заглушки кода pb.h/pb.cpp, созданные для proto2, и просто вместо этого связать свое устаревшее приложение с libprotobuf3.x, и это будет работать как шарм?

Я не хочу обновлять устаревшие прототипы до proto3, так как это может потребовать серьезного рефакторинга в устаревшем коде.


person user2813650    schedule 10.09.2020    source источник
comment
Отвечает ли это на ваш вопрос? Обратная совместимость Protobuf и proto3 vs proto2   -  person JulianH    schedule 10.09.2020


Ответы (1)


Нет, вы не можете связать .pb.* файлы, созданные с помощью protoc 2.0, с libprotobuf 3.0. Как и в случае с любой общей библиотекой, увеличение номера основной версии означает критическое изменение API.

Совместимость с proto2 означает, что поддерживается синтаксис Proto 2 (syntax = "proto2"). Также proto3 бинарно совместим с proto2 в сети.

Я не хочу обновлять устаревшие прототипы до proto3, так как это может потребовать серьезного рефакторинга в устаревшем коде.

Скорее всего, если вы повторно сгенерируете файлы .pb с помощью protoc 3 и перекомпилируете, они будут работать без рефакторинга (синтаксис по умолчанию по-прежнему proto2).

person rustyx    schedule 10.09.2020