Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用GTK2.x而不是gtk3.x编译opencv_C++_Linux_Qt_Opencv_Gtk - Fatal编程技术网

C++ 如何使用GTK2.x而不是gtk3.x编译opencv

C++ 如何使用GTK2.x而不是gtk3.x编译opencv,c++,linux,qt,opencv,gtk,C++,Linux,Qt,Opencv,Gtk,我正在ubuntu 16.04中使用tensorflow 1.4和qt。问题是当我同时包含tensorflow(版本:1.4)和opencv(版本:3.2.0)时,protobuf是冲突的。错误消息如下: [libprotobuf FATAL external/protobuf_archive/src/google/protobuf/stubs/common.cc:79]此程序是根据协议缓冲区运行库的2.6.1版编译的,该版本与安装的版本(3.4.0)不兼容。请与程序作者联系以获取更新。如果您自

我正在ubuntu 16.04中使用tensorflow 1.4和qt。问题是当我同时包含tensorflow(版本:1.4)和opencv(版本:3.2.0)时,protobuf是冲突的。错误消息如下:

[libprotobuf FATAL external/protobuf_archive/src/google/protobuf/stubs/common.cc:79]此程序是根据协议缓冲区运行库的2.6.1版编译的,该版本与安装的版本(3.4.0)不兼容。请与程序作者联系以获取更新。如果您自己编译了该程序,请确保您的头来自与链接时间库相同版本的协议缓冲区。(版本验证在“/build/mir-O8_xaj/mir-0.26.3+16.04.20170605/obj-x86_64-linux-gnu/src/protobuf/mir_protobuf.pb.cc”中失败。)
在抛出“google::protobuf::FatalException”实例后调用terminate
what():此程序是根据协议缓冲区运行库的版本2.6.1编译的,该版本与安装的版本(3.4.0)不兼容。请与程序作者联系以获取更新。如果您自己编译了该程序,请确保您的头来自与链接时间库相同版本的协议缓冲区。(版本验证在“/build/mir-O8_xaj/mir-0.26.3+16.04.20170605/obj-x86_64-linux-gnu/src/protobuf/mir_protobuf.pb.cc”中失败)

我从某个地方了解到,带有
gtk-3.x
的opencv将使用导致上述问题的
protobuf 2.6.1
,安装带有
gtk-2.x
的opencv将不依赖于protobuf。opencv cmake msg的一部分如下所示,cmake自动使用
gtk 3.x

GUI:
--QT:没有
--GTK+3.x:是(版本3.18.9)
--GThread:是(版本2.48.2)
--GtkGlExt:没有
--OpenGL支持:否
--VTK支持:否

系统gtk信息如下:

$pkg config--modversion gtk+-2.0
$2.24.30


这就是问题所在。我如何使用
cmake
安装带有
gtk 2.x
的opencv?

对于我来说,您只需要安装所需的依赖项,它是与2.6.1兼容的
protobuf
版本

快速搜索表明,包<代码> LbPotoBuf9v5<代码>提供了协议缓冲区C++库< /> >,并在版本2.61.试着安装这个


顺便说一句,回到过去使用过时的技术,如GTK+2是一个糟糕的举动。如果您真的想更改工具箱,选择它只需在
cmake
调用中定义正确的选项即可。在顶级
CMakeLists.txt
中,您可以很容易地找到
带_GTK
带_GTK2
带_QT
选项。在对
cmake
的命令行调用中启用它们,或者使用
cmake gui
启用它们。如果您自己已经在使用Qt,只需使用Qt后端而不是旧的GTK后端重新构建即可。

显示您的CMakeLists.txt如何检测GTK。如果它有类似SET的内容(GTK_PATH/usr/lib/x86_64-linux-gnu/),那么您可以更改该路径。