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

OpenCV 3.2包括libmir*和protobuf 2.6,这与protobuf 3.1相冲突

佟高澹
2023-03-14

我有一些问题与安装OpenCV与conrib模块从源代码和原型库。

我有一个程序,需要Protobuf3.1。以及带有contrib模块的OpenCV 3.2。在从源代码编译和安装这两个程序之后,程序本身编译和链接良好。在执行程序时,我得到以下错误:

此程序是针对2.6.1版本的协议缓冲区运行库编译的,该版本与安装的版本(3.1.0)不兼容。联系程序作者进行更新。如果您自己编译程序,请确保您的标头来自与链接时库相同的协议缓冲区版本。(版本验证失败的"/build/mir-pkdHET/mir-0.21.0 16.04.20160330 /obj-x86_64-linux-gnu/src/protobuf/mir_protobuf.pb.cc"。)终止调用抛出一个实例'google::原型f::FatalExc0019'什么():此程序是根据协议缓冲区运行时库的版本2.6.1编译的,该版本与安装的版本(3.1.0)不兼容。联系程序作者进行更新。如果您自己编译程序,请确保您的标头来自与链接时库相同的协议缓冲区版本。(版本验证在/build/mir-pkdHET/mir-0.21.0 16.04.20160330 /obj-x86_64-linux-gnu/src/protobuf/mir_protobuf.pb.cc中失败。)

查看我的软件的链接库,我发现protobuf包含在2.6中。(so.9)和3.1(so.11)以及利伯米尔*。所以

ldd localization | grep protobuf*
libprotobuf.so.11 => /usr/local/lib/libprotobuf.so.11 (0x00007f1797df8000)
libmirprotobuf.so.3 => /usr/lib/x86_64-linux-gnu/libmirprotobuf.so.3 (0x00007f178a751000)
libprotobuf-lite.so.9 => /usr/lib/x86_64-linux-gnu/libprotobuf-lite.so.9 (0x00007f178a31b000)

查看链接库,我发现Opencv链接

  • libmir库(使用的是原型库)与
  • usr/lib/x86_64-linux-gnu/libprotobuf-lite.so.9

虽然我的协议3.1是在 /usr/local/也是opencv使用lib协议3.1时,建设DNN部件等。

~$ ldd /usr/local/bin/opencv* | grep libproto* 
libprotobuf-lite.so.9 => /usr/lib/x86_64-linux-gnu/libprotobuf-lite.so.9

ldd /usr/local/bin/opencv* | grep libmir*
libmirclient.so.9 => /usr/lib/x86_64-linux-gnu/libmirclient.so.9 (0x00007f1d59b4c000)
libmircommon.so.5 => /usr/lib/x86_64-linux-gnu/libmircommon.so.5 (0x00007f1d56d5f000)
libmirprotobuf.so.3 => /usr/lib/x86_64-linux-gnu/libmirprotobuf.so.3 (0x00007f1d56afe000)
  • 什么是libmir*(libmirclient9或libmirclient dev或libmircomon5等显然是通过apt安装的),它的用途是什么
  • Opencv 3的哪个部分/库/模块使用libprotobuf 2.6和libmir
  • 如何在不使用任何protobuf库(或其链接)的情况下配置Opencv 3的构建
  • 没有protobuf 2.6或libmirprotobuf的情况下编译我自己的程序还有其他方法吗

非常感谢你的努力。

弗洛里安酒店

共有1个答案

谭嘉容
2023-03-14

好的,构建WITH_QT=ON消除了对libmir的需求,因此libprobuf 2.6

下面是完整的cmake命令,它起到了作用:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
 类似资料:
  • 当我尝试安装sonata admin和LiipFunctionalTestBundle时,它给我一个验证器问题, FileLoaderLoadExc0019:可捕获的致命错误:参数1传递给Sonata\AdminBundle\Admin\Admin::setValidator()必须实现接口Symfony\Component\Validator\ValidatorInterface,Liip\Fu

  • 在JSP中,我可以使用include共享超文本标记语言代码: 在我的生活中,我不知道ASP.NET我应该如何包含共享的超文本标记语言。我可以使用模板控件,但这真的不是一回事。我可以使用网站母版页和内容占位符,但这也不一样,需要一种不同的方法来开发我的页面。 我是运气不好还是ASP中有函数。NET类似于JSP的包含?

  • .在我的日志中,当我试图升级apk时,我得到以下信息: .orginal应用程序已经生产了4年多,是用Eclipse编写的,它安装在我的旧硬盘上。 六个月前,我的老板给我买了一个SSD驱动器,我安装了Android Studio。我迁移了旧的项目,它构建良好,它将安装到一个设备上,没有安装以前的版本。 谁能告诉我为什么Android说我的升级是用不同的密钥签名的? [更新1] 我已经提取了新旧AP

  • 问题内容: 通常,我需要下载一个网页,然后离线对其进行编辑。我尝试了一些工具,它们缺少的主要功能是下载CSS文件中引用的图像。 是否有一个工具(用于Linux)可以下载所有内容,以便该网页可以离线呈现相同内容(不包括AJAX)? 问题答案: wget –page-requisites http://example.com/your/page.html 此选项使Wget下载正确显示给定html页面所

  • 问题内容: 我们有一个以异常结尾的包,例如 直到eclipse 3.3为止,我们的代码库都没有问题,但是当我们转到eclipse 3.4时,它开始给出与此软件包相关的错误: 当我将包名称重构为abcexceptions时,没有任何问题。这是由于eclipse 3.4中的错误还是有一些设置可以纠正此行为? 问题答案: 我在eclipse中更改了编译选项之一,问题消失了。在工作空间属性下:Java编译

  • 我有两个XSD,其中一个XSD包含一个元素,该元素可以包含第二个XSD中的元素。基本上,XSD1有一个元素“etta”,它可以包含XSD2中的任何元素。 我使用xjc生成类,当它被反序列化时,元元素将XSD2中的元素作为JAXBElements包含,而不是XSD2中生成的实际类。我在我的程序中包含了这两组类,包信息是正确的。 这就是我定义XSD的方式。我想问题在于我的“任何”元素。 因此,基本上我