我正在尝试在谷歌 Protocol Buffer 中定义我的自定义字段选项。如果我创建这样一个文件,一切正常:
import "google/protobuf/descriptor.proto";
package tutorial;
extend google.protobuf.FieldOptions {
optional int32 myopt = 70000;
}
message Persona {
required string name = 1 [(myopt)=5];
}
但是,如果我尝试将“myopt”定义移动到另一个文件,编译会失败:
myext.proto:
package myext;
import "google/protobuf/descriptor.proto";
extend google.protobuf.FieldOptions {
optional int32 myopt = 70000;
}
地址簿.proto:
import "google/protobuf/descriptor.proto";
import "myext.proto";
package tutorial;
message Persona {
required string name = 1 [(myopt)=5];
}
编译:
$ protoc --cpp_out=. -I/usr/include -I. addressbook.proto
addressbook.proto:8:29: Option "(myopt)" unknown.
有什么方法可以在使用它的文件之外的其他文件中定义自定义字段选项吗?如果我想在多个 .proto 文件中使用我的选项,将公共(public)部分移动到公共(public)文件很重要。
最佳答案
因为你有一个包myext
你应该做的
import "myext/myext.proto";
myext.proto 位于myext 的子目录 中。
在protocol buffer package中表示文件应该驻留的目录(就像在java中一样)
关于c++ - 在导入的 .proto 文件中扩展 protobuf.FieldOptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17126230/