Расширение FileOptions в нескольких протосах - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь использовать расширение уровня файла, используя FileOptions для создания версий некоторых прототипов.

Я создал следующие файлы:

Version.proto

import "google/protobuf/descriptor.proto";
extend google.protobuf.FileOptions {
  string version = 50001;
}

У меня есть два дополнительных протоса, которые импортируют Version.proto и используют расширение опции (версии):

A.proto

import "Version.proto";
option (version) = "1.0.1";

B.proto

import "Version.proto";
option (version) = "1.0.1";

Я компилирую прото-файлы с protoc.exe и связываю libprotobufd.dll.Когда я запускаю приложение, использующее файлы A & B, я получаю следующую ошибку:

[libprotobuf FATAL google \ protobuf \ extension_set.cc: 102] Регистрация нескольких расширений для типа google.protobuf.FileOptions , номер поля 50001.

1 Ответ

0 голосов
/ 11 апреля 2019

Я не могу сказать, как это происходит, не зная, как ваш проект структурирован / компилируется, но вы как-то используете номер поля 50001 более одного раза. Дважды проверьте, что число 50001 появляется в вашем проекте только один раз. Если у вас несколько сообщений FileOptions, все они имеют одинаковые номера полей расширения сообщения.

Если вы уверены, что не регистрируете 50001 дважды, попробуйте переключиться на что-нибудь случайное, например 78354, и посмотрите, не исчезнет ли проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...