与protobuf3相关的错误
我有一个具有c ++可执行核心和几个称为插件的共享库(.so,.dll)的项目。内核启动时,它将使用dlopen加载这些插件。内核和插件使用protobuf作为通信协议,因此它们必须将生成的文件.pb.cc和.ph.h文件编译到其二进制文件中,才能获得序列化器/解串器的副本。并libprotobuf.so链接到核心和插件。当我启动核心时,它因错误而崩溃:数据库中已存在文件,#863中存在相同错误
我正在使用protobuf-3 beta2和Ubuntu 14.04。此错误仅在Linux上发生。该程序可以在Windows和OS X上正常运行。
我还尝试了另一种方法,将所有生成的protobuf文件编译成一个动态库(protocol.so),然后将核心和插件链接到protocol.so和libprotobuf.so。这很好。当然,因为在#1062中,此错误已得到修复。但是,当我改变了protocol.so到protocol.a,它再次失败。我认为这与.pb.cc单独生成的编译相同。
我不想编译a protocol.so,因为当我添加越来越多的插件时,扩展通信协议对我来说是不便的。我认为将生成.pb.cc的文件编译为插件的二进制文件更好(在Windows和OS X上效果很好)。
任何建议解决此错误表示赞赏。