多个共享对象使用相同的原型导致错误:数据库中已存在文件

piaoxu

与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.solibprotobuf.so这很好。当然,因为在#1062中,此错误已得到修复。但是,当我改变了protocol.soprotocol.a,它再次失败。我认为这与.pb.cc单独生成的编译相同

我不想编译一个protocol.so,因为当我添加越来越多的插件时,扩展通信协议对我来说很不方便。我认为将生成.pb.cc的文件编译到插件的二进制文件中会更好(在Windows和OS X上效果很好)。

任何建议,以解决此错误,不胜感激。

肯顿·瓦尔达(Kenton Varda)

当同一.pb.cc文件的多个已编译副本共享的单个副本时,就会发生此问题libprotobuf.so有两种方法可以避免这种情况:

  1. 您已经找到的方式:将.pb.cc文件分解到共享库中。
  2. 将libprotobuf的单独副本链接到每个插件中。您需要为此库使用静态链接,即使用libprotobuf.a而不是libprotobuf.so请注意,使用此选项,在插件和基础应用程序之间传递指向protobuf类的指针是不安全的,因为它们使用的是protobuf库的单独副本,这可能导致崩溃。您将必须将序列化消息作为字节Blob传递。幸运的是,这就是protobuf的全部重点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MacOS Catalina升级后部署Google Dataflow模板时,Protobuf的数据库错误中已存在文件

来自分类Dev

使用R将多个csv文件导入到postgresql数据库中(内存错误)

来自分类Dev

将 NodeJS 连接对象保存在共享数据库/内存中

来自分类Dev

实体框架是否看到数据库中已存在的对象内部的属性更改?

来自分类Dev

EntityFramework 7数据库在迁移时已存在错误

来自分类Dev

南数据库错误:关系已存在

来自分类Dev

如果数据库中已存在值,则显示错误消息

来自分类Dev

如何检查文件数据库中是否已存在电子邮件地址?

来自分类Dev

如何使用PHP检查数据库中是否已存在数据?

来自分类Dev

如何创建事务以将多个对象保存在数据库中?

来自分类Dev

从数据库中获取表已存在

来自分类Dev

如何使用CodeIgniter检查数据库中是否已存在电子邮件

来自分类Dev

如何使用PHP CodeIgniter,JQuery,AJAX检查数据库中是否已存在ID验证

来自分类Dev

猫鼬.save()返回空错误对象,不保存在数据库中

来自分类Dev

在 Hibernate 中,当对象已存在于数据库中时,为什么 saveOrUpdate 会给出异常

来自分类Dev

数据库错误:无法使用数据库mydatabase MySQL错误:0()会话已暂停

来自分类Dev

已访问数据库后出现错误“文件不是数据库”

来自分类Dev

Azure SQL数据库重命名失败(错误1801:已存在),但数据库不存在

来自分类Dev

错误:ObjectStateManager中已经存在具有相同键的对象。ObjectStateManager无法使用相同的键跟踪多个对象

来自分类Dev

在多个项目中使用相同的数据库

来自分类Dev

相同的 DbContext,使用 EF Core 的多个数据库

来自分类Dev

设计多个表使用相同模型的 SQL 数据库

来自分类Dev

PHP-Yii 2.0多个图像保存在文件夹中,但未保存在数据库中

来自分类Dev

在两个Django项目之间共享数据库时,如何解决“表“ auth_permission”已存在”的错误

来自分类Dev

如何检查数据库中是否存在多个值?

来自分类Dev

在Laravel 5.2中使用多个MySQL数据库连接查询关系存在

来自分类Dev

使用jquery的多个选择框值未保存在数据库中?

来自分类Dev

搜索数据库中许多对象的存在

来自分类Dev

是否可以使用@manytomany关系仅关联数据库中已经存在的对象?

Related 相关文章

  1. 1

    MacOS Catalina升级后部署Google Dataflow模板时,Protobuf的数据库错误中已存在文件

  2. 2

    使用R将多个csv文件导入到postgresql数据库中(内存错误)

  3. 3

    将 NodeJS 连接对象保存在共享数据库/内存中

  4. 4

    实体框架是否看到数据库中已存在的对象内部的属性更改?

  5. 5

    EntityFramework 7数据库在迁移时已存在错误

  6. 6

    南数据库错误:关系已存在

  7. 7

    如果数据库中已存在值,则显示错误消息

  8. 8

    如何检查文件数据库中是否已存在电子邮件地址?

  9. 9

    如何使用PHP检查数据库中是否已存在数据?

  10. 10

    如何创建事务以将多个对象保存在数据库中?

  11. 11

    从数据库中获取表已存在

  12. 12

    如何使用CodeIgniter检查数据库中是否已存在电子邮件

  13. 13

    如何使用PHP CodeIgniter,JQuery,AJAX检查数据库中是否已存在ID验证

  14. 14

    猫鼬.save()返回空错误对象,不保存在数据库中

  15. 15

    在 Hibernate 中,当对象已存在于数据库中时,为什么 saveOrUpdate 会给出异常

  16. 16

    数据库错误:无法使用数据库mydatabase MySQL错误:0()会话已暂停

  17. 17

    已访问数据库后出现错误“文件不是数据库”

  18. 18

    Azure SQL数据库重命名失败(错误1801:已存在),但数据库不存在

  19. 19

    错误:ObjectStateManager中已经存在具有相同键的对象。ObjectStateManager无法使用相同的键跟踪多个对象

  20. 20

    在多个项目中使用相同的数据库

  21. 21

    相同的 DbContext,使用 EF Core 的多个数据库

  22. 22

    设计多个表使用相同模型的 SQL 数据库

  23. 23

    PHP-Yii 2.0多个图像保存在文件夹中,但未保存在数据库中

  24. 24

    在两个Django项目之间共享数据库时,如何解决“表“ auth_permission”已存在”的错误

  25. 25

    如何检查数据库中是否存在多个值?

  26. 26

    在Laravel 5.2中使用多个MySQL数据库连接查询关系存在

  27. 27

    使用jquery的多个选择框值未保存在数据库中?

  28. 28

    搜索数据库中许多对象的存在

  29. 29

    是否可以使用@manytomany关系仅关联数据库中已经存在的对象?

热门标签

归档