3

我收到此错误:

./google/protobuf/generated_message_util.h:86: const string& google::protobuf::internal::GetEmptyStringAlreadyInited(): 断言 `empty_string_ != __null' 失败。

我整天都在努力解决这个问题。所以我的项目中的流程是这样的:

我有一个在 Ubuntu 16.10 上使用 CMake 编译的 C++ 项目。经过一些处理后,我想将数据发送到使用 Keras 进行机器学习的 Python 脚本。

现在这两个脚本都可以完美地独立工作。我想将数据直接发送到 Python 脚本。所以我通过引用这个链接在 C++ 中嵌入了 Python

这再次适用于不导入 keras 的 Python 脚本。

现在,当我在这个 Python 脚本中导入 keras 时,我得到了上述错误,尽管它们都可以独立地正常工作。

首先,我收到了一个错误,因为 libprotobuf 和 protoc 版本不匹配,如下所示:

使用 TensorFlow 后端。[libprotobuf FATAL google/protobuf/stubs/common.cc:67] 这个程序需要 3.5.0 版本的 Protocol Buffer 运行时库,但是安装的版本是 3.0.0。请更新您的图书馆。如果您自己编译程序,请确保您的标头来自与链接时库相同版本的 Protocol Buffers。(“google/protobuf/descriptor.pb.cc”中的版本验证失败。)在抛出 'google::protobuf::FatalException' 的实例后调用终止 what():该程序需要 3.5.0 版的协议缓冲区运行时库,但安装的版本是 3.0.0。请更新您的图书馆。如果您自己编译程序,请确保您的标头来自与链接时库相同版本的 Protocol Buffers。

我已经使用 apt-get 安装了 protoc(apt-get 上可用的最新版本是 3.0.0),因为我发现其中一个答案是您不需要 protoc 3.5.0 就可以工作。pip3 install protobuf安装导致不匹配错误消息的 protobuf 3.5.0。

所以我卸载了这个 Python protobuf 版本并使用pip3 install protobuf==3.0.0. 这删除了不匹配错误消息。

但是现在我收到了上述错误消息。我还发现错误消息是由于 Keras 的 Tensorflow 依赖性而发生的

我该如何解决?

请帮忙

4

0 回答 0