当前位置: 首页 > 知识库问答 >
问题:

协议缓冲区错误版本

令狐嘉禧
2023-03-14

我试图安装Caffe库,但我有一个编译问题,由于一个错误的原型版本安装在我的系统。

In file included from .build_release/src/caffe/proto/caffe.pb.cc:5:0:
.build_release/src/caffe/proto/caffe.pb.h:17:2: error: #error This file was generated by an older version of protoc which is
 #error This file was generated by an older version of protoc which is
  ^
.build_release/src/caffe/proto/caffe.pb.h:18:2: error: #error incompatible with your Protocol Buffer headers. Please
 #error incompatible with your Protocol Buffer headers.  Please
  ^
.build_release/src/caffe/proto/caffe.pb.h:19:2: error: #error regenerate this file with a newer version of protoc.
 #error regenerate this file with a newer version of protoc.

我在论坛上遵循了许多提议的方法,我认为在这篇帖子中讨论了最类似的问题。

在caffe.pb.h中控件是:

#if 3002000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers.  Please
#error regenerate this file with a newer version of protoc.
#endif

但是在我的系统标头(/usr/include/google/cript buf/stubs/Common. h)中:

The current version, represented as a single integer to make comparison
easier:  major * 10^6 + minor * 10^3 + micro
define GOOGLE_PROTOBUF_VERSION 2005000

命令protoc--version从终端返回libprotoc 3.2.0。

所以我安装了3.2版本,但系统标题没有更新。前一篇帖子中的一位用户评论道:“我找到了一种方法,首先在PATH变量中指定我想要的protobuf,而不必删除protobuf的另一个版本(其他事情取决于旧版本)。”

有人能一步一步地给我解释一下我该怎么理解?或者,我可以更新系统标题吗?有许多元素与libprotoc有关,所以我希望避免损坏它们。

谢谢

共有1个答案

丁宏浚
2023-03-14

我在电脑上解决了这个问题,也许它能帮你。我的环境是Ubuntu16。04,我在安装Caffe之前安装了Anaconda(用于python2.7)。碰巧我用conda安装了libprotobuf dev,这导致了与caffe的“sudo apt get install libprotobuf dev”命令的冲突,因为“apt get”和conda安装在我的计算机上不同,可以通过“locate protobuf”找到,所以我删除了Anaconda版本的libprotobuf,没有问题再次发生。

conda uninstall libprotobuf
conda uninstall protobuf

当您在安装Caffe之前安装tenorflow时,这个问题也会发生,因为libProfibuf冲突。

 类似资料:
  • 我不小心安装了3.0.0版,我的大多数文件自然产生了大量错误。现在我想把它带回2.6.1。我已经下载了2.6.1并安装了,但是当我做时,它仍然显示,这是错误的。 有办法将版本设置为2.6.1还是有办法卸载3.0.0?

  • 我试着按照你的指示去做https://github.com/golang/protobuf和https://github.com/google/protobuf/releases安装协议缓冲区。在我将bin路径从下载文件夹添加到之后,我试图运行,但它显示 有没有办法判断我是否正确安装了protobuf? 谢谢

  • 我试图构建一些先前存在的Java代码,其中包括谷歌协议缓冲区在其传输层。我正在使用的插件在pom文件中包含了以下元素: 我已经安装了protobuf 2.4.1版,protoc可以通过命令行获得,我在pom中包含的protobuf-java版本也是来自com.google.protobuf组的2.4.1版本。正如我前面提到的,我必须使用这个技术堆栈,因为我正在使用现有的代码库,但是尽管有一个新版本

  • 试图使用Ionic 4中的协议缓冲区进行编码 我已经下载了协议并用它来生成一堆_pb.js文件,每个. proto文件一个。很好。 首先关注原型示例。这是示例代码: 我做了一些更改以匹配我的文件。更改proto文件的名称。但是我的proto文件中没有包名称。所以我只是使用了消息名称。首先这是我的. proto文件的开头: 下面是我修改后的代码: 这似乎不起作用。我的控制台显示: 我相信我已经成功地

  • 问题内容: 我正在使用gSoap将旧式C 系统重构为SOA。我们遇到了一些性能问题(非常大的XML),因此我的领导要我看一下协议缓冲区。我做到了,它看起来非常酷(我们需要C 和Java支持)。但是协议缓冲区是仅用于序列化的解决方案,现在我需要将其发送到Java前端。从C ++和Java角度来看,我应该使用什么来通过HTTP(只是内部网络)发送那些序列化的内容? PS。另一个人试图加速我们的gSoa

  • 我试图在Python 3项目中使用Google协议缓冲区。然而,生成的python文件不想与google合作。protobuf库。尝试使用protobuf对象会导致NotImplementedError。 我的设置: Python 3.4.1 使用这些库时出现问题: https://pypi.python.org/pypi/protobuf-py3/2.5.1 python3-原型(https:/