【发布时间】:2016-02-06 20:51:42
【问题描述】:
我正在 Ubuntu 14.04 LTS 上使用带有 Node.JS 的 google 协议缓冲区。我有两个使用相同协议缓冲区和 protobuf 库的不同(A 和 B)Node.JS 插件(c++)。当我在之前需要模块 A 之后使用 require() 创建模块 B 的新实例时,服务器停止并显示错误消息:
[libprotobuf ERROR google/protobuf/descriptor_database.cc:57] File already exists in database: Anam.proto
[libprotobuf FATAL google/protobuf/descriptor.cc:1157] 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)
我用谷歌搜索了这个错误,发现其他人只在 Linux 上遇到这个错误。我还从 github 安装了最新版本的 protobuf 库,但没有帮助。我包含 libprotobuf 的 binding.gyp 部分如下所示:
"libraries": ["/usr/lib/libpq.so",
"/usr/local/lib/libprotobuf.so",
"/usr/local/lib/libboost_system.so",
"/usr/local/lib/libboost_thread.so",
"/usr/local/lib/libboost_signals.so"]
如果我为同一个模块创建更多实例(例如需要插件 A 2 次),它就可以工作。有人对如何解决这个问题有任何建议吗?
【问题讨论】: