gpt4 book ai didi

c++ - 如何用 gtk 2.x 而不是 gtk3.x 编译 opencv

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:29 28 4
gpt4 key购买 nike

我在 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] 该程序是针对 Protocol Buffer 运行时库的 2.6.1 版编译的,它与安装的不兼容版本 (3.4.0)。联系程序作者以获取更新。如果您自己编译程序,请确保您的 header 与您的链接时库来自同一版本的 Protocol Buffers。 (“/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”实例后调用终止
what():该程序是针对 Protocol Buffer 运行时库的 2.6.1 版编译的,该版本与安装的版本 (3.4.0) 不兼容。联系程序作者以获取更新。如果您自己编译程序,请确保您的 header 与您的链接时库来自同一版本的 Protocol Buffers。 (在“/build/mir-O8_xaj/mir-0.26.3+16.04.20170605/obj-x86_64-linux-gnu/src/protobuf/mir_protobuf.pb.cc”中版本验证失败。)

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

图形用户界面:
-- 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 版本。

快速搜索packages.ubuntu.com显示包 libprotobuf9v5 提供 protocol buffers C++ library 并且版本为 2.6.1。只需尝试安装它即可。

顺便说一句,回到过去使用像 GTK+2 这样的过时技术是一个糟糕的举动。如果您真的想更改您的工具包,只需在 cmake 调用中定义正确的选项即可选择它。在顶层 CMakeLists.txt 中,可以轻松找到 WITH_GTKWITH_GTK2WITH_QT 选项。在命令行调用 cmake 或使用 cmake-gui 启用它们如果您自己已经在使用 Qt,只需使用 Qt 后端而不是旧的 GTK 进行重建一个。

关于c++ - 如何用 gtk 2.x 而不是 gtk3.x 编译 opencv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47503347/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com