我正在尝试使用 FileOptions 使用文件级扩展来对某些原型文件进行版本控制。
我创建了以下文件:
Version.proto
import "google/protobuf/descriptor.proto";
extend google.protobuf.FileOptions {
string version = 50001;
}
我还有另外两个导入Version.proto并使用option(version)扩展名的原型:
A.proto
import "Version.proto";
option (version) = "1.0.1";
B.proto
import "Version.proto";
option (version) = "1.0.1";
我用protoc.exe编译proto文件,并链接libprotobufd.dll。当我运行使用A和B文件的应用程序时,出现以下错误:
[libprotobuf FATAL google \ protobuf \ extension_set.cc:102] 类型为google.protobuf.FileOptions 的多个扩展名注册,字段号50001。
答案 0 :(得分:0)
在不知道项目结构/正在编译的情况下我无法说出它是如何发生的,但是您不知何故多次使用了字段50001。仔细检查数字50001仅在您的项目中显示一次。如果周围有多条FileOptions消息,它们都共享相同的消息扩展名字段编号。
如果您确定自己没有两次注册50001
,请尝试切换到78354
之类的随机变量,看看问题是否仍然存在。