protobuf 库在消息实例化时抛出 FatalException

Posted

技术标签:

【中文标题】protobuf 库在消息实例化时抛出 FatalException【英文标题】:FatalException thrown by protobuf library on instantiation of message 【发布时间】:2018-10-19 10:26:22 【问题描述】:

我正在从源代码编译 protobuf 3.6.1 并链接到一个针对 Ubuntu 16.04 的可执行文件。一旦创建了任何消息类型的对象,库就会抛出异常,并带有以下控制台输出:

[libprotobuf FATAL /myproj/protobuf/src/google/protobuf/generated_message_util.cc:785] CHECK 失败:(scc->visit_status.load(std::memory_order_relaxed)) == (SCCInfoBase::kRunning): 在抛出“google::protobuf::FatalException”实例后调用终止 what(): CHECK 失败: (scc->visit_status.load(std::memory_order_relaxed)) == (SCCInfoBase::kRunning): 中止

【问题讨论】:

【参考方案1】:

正如here 解释的那样,您需要运行pkg-config 或以其他方式确定在使用protobuf 的项目中使用哪些构建标志。在这种特殊情况下,缺少 pthread 库。

【讨论】:

那么当依赖代码的所有这些标志都存在时,还可以尝试什么?我仍然遇到自编译 mosh 的这个问题。 @oarfish,恐怕不能说。这听起来像是一个新问题的主题。 在我的情况下,我必须使用所需的标志编译客户端和服务器,并使用最近的编译器。

以上是关于protobuf 库在消息实例化时抛出 FatalException的主要内容,如果未能解决你的问题,请参考以下文章

dll Matlab实例在c#中运行release时抛出异常

在目标上调用 xxx 时抛出无法识别的发送到实例的选择器

C++:在计算大字符串的长度时抛出“std::bad_alloc”的实例后调用终止

RabbitMQ 发送到 dql 时抛出异常(最大 frame_size)

尝试发送嵌入时抛出错误

CloudFormation 在启动 EC2 实例时抛出“Value () for parameter groupId is invalid. The value cannot be empty”