C++ 协议缓冲区错误版本

C++ 协议缓冲区错误版本,c++,protocol-buffers,protoc,C++,Protocol Buffers,Protoc,我正在尝试安装Caffe库,但由于系统中安装了错误的protobuf版本,因此出现了编译问题 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

我正在尝试安装Caffe库,但由于系统中安装了错误的protobuf版本,因此出现了编译问题

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
命令protoc--version从终端返回libprotoc3.2.0

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

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


谢谢

我在电脑上解决了这个问题,也许它可以帮助你。我的环境是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之前安装tensorflow时,由于libprotobuf冲突,这个问题也会发生

conda uninstall libprotobuf
conda uninstall protobuf