我们正在尝试为 C++ 运行时实现协议缓冲区格式 (ONNX) 导入器。我们的运行时将被前端应用程序使用,这些应用程序也使用协议缓冲区模型。
当尝试执行同时运行前端和后端组件的进程时,我们看到错误指示符号名称conflicts with the existing symbol
.
[libprotobuf ERROR google/protobuf/descriptor_database.cc:109] Symbol name "onnx.AttributeProto" conflicts with the existing symbol "onnx.AttributeProto".
[libprotobuf FATAL google/protobuf/descriptor.cc:1164] CHECK failed: generated_database_->Add(encoded_file_descriptor, size):
terminate called after throwing an instance of 'google::protobuf::FatalException'
what(): CHECK failed: generated_database_->Add(encoded_file_descriptor, size):
Aborted (core dumped)
有没有办法让两个组件(应用程序和共享对象)静态链接 PB 消息处理代码并在一个进程中注册相同的 Protobuf 符号?有没有办法告诉其他组件不要重新注册 PB 消息?