目录

  • 一 因OpenCV版本不一致所引发的报错


注:原创不易,转载请务必注明原作者和出处,感谢支持!

一 因OpenCV版本不一致所引发的报错

今天遇到了一个很有意思的报错。

事情是这样的, 在编译《视觉SLAM十四讲》第12章的一个程序时,编译器报了“未定义的引用”的错误。该程序使用了DBoW3这个库,而这个库又是依赖OpenCV的。DBoW3这个库经过编译之后会生成一个静态链接库并被安装在/usr/local/lib路径下。

未定义的引用错误使我我意识到这是链接库出了问题。经过一番折腾,发现原因是这样的。我的虚拟机里安装的是最新的OpenCV 4.1.1版本,但同时也安装了ROS,而ROS里自带了一个OpenCV 3.3.1的版本。在编译DBoW3库的时候,不知是何原因,cmake搜索到的是3.3.1版本的OpenCV,因此DBoW3的链接库链接的是3.3.1版本的OpenCV动态库。但是第12章里的程序所引用的却是4.1.1版本的OpenCV的头文件,所以在去链接DBoW3的静态库的时候自然就报了未定义的引用的错误了。

于是,修改DBoW3CMakeLists.txt文件,使用OpenCV 4.1.1作为其依赖,重新编译并安装DBoW3库,问题得以解决!

顺便再多啰嗦几句,我查看了cmakeCMAKE_MODULE_PATH变量的内容,发现它指向的路径是/usr/local/lib/cmake/usr/lib/cmake,而这两个路径下是没有FindOpenCV.cmake文件的,相反,OpenCV在安装时提供了OpenCVConfig.cmake文件,该文件在/usr/local/lib/cmake/opencv4/路径下。所以,你只需要在DBoW3库的CMakeLists.txt文件中指定OpenCV_DIR为前面所提到的路径值即可。这样cmake就能够找到4.1.1版本的OpenCV了。

转载于:https://www.cnblogs.com/laizhenghong2012/p/11311354.html

因OpenCV版本不一致所引发的报错相关推荐

  1. NULL 指针在不同平台下的表现引发程序报错(C 语言)

    NULL 指针在不同平台下的表现引发程序报错(C 语言) 为什么有这篇 正文 1. 使用环境 2.问题描述及展示 3. 走了些弯路 4. 柳岸花明(GDB 调试) 5. 访问 NULL 指针错误背后的 ...

  2. Swift5版本以上自定义回调函数报错

    Swift5版本以上自定义回调函数报错 最新swift版本要求在回调函数前面加入@escaping 关键字,以前不写,默认加入,现在不行了 假设一个类写一个全局类方法,第一步写一个class ,代表类 ...

  3. 【踩坑记录】mybatis-plus的insert方法,默认会生成一个uuid作为主键,导致类型不一致,存入数据库报错

    [踩坑记录]mybatis-plus的insert方法,默认会生成一个uuid作为主键,导致类型不一致,存入数据库报错 报错记录 解决方案 推荐方案 使用uuid作为主键,修改id的类型为bigint ...

  4. Eclipse中更改JDK版本,解决ant编译报错的问题

    要改一个JDK版本 主要是为了解决ant编译报错,JDK版本不一致的问题. 1. Windows--Preferences--Java--Compiler(配置的为1.8)--Installed JR ...

  5. 关于Mysql5.7高版本group by新特性报错

    一个项目的开发到测试上线运营,团队对项目的管理不成熟会影响项目的开发效率.由于项目是我刚接手,独自在Centos搭建PHP环境,所以就考虑使用高版本,选择了Mysql5.7,本地开发环境还是Windo ...

  6. magento php mysql_Mysql版本过低导致Magento报错的解决方案

    MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言. ...

  7. 关于linux python3.7版本 No module named ‘_ssl‘报错

    直接说解决方法: 在python源码包make之前,先在Modules文件夹下对Setup.dist进行修改.其他帖子说的对Setup文件修改需要先进行./configure才会有Setup这个文件. ...

  8. 【bug修复】低版本工程导入Unity2018 Shader 报错

    Bug: 低版本工程使用unity2018打开之后,经常会出现shader报错,一个常见的原因是因为: LIGHT_ATTENUATION(IN);           //这个函数已经过时了 解决方 ...

  9. 关于opencv不能调用本地摄像头,报错没有shape属性

    这里有一段经典摄像头打开并显示画面的代码 import cv2cap = cv2.VideoCapture(0)while(1):# 获得图片ret, frame = cap.read()# 展示图片 ...

最新文章

  1. 2021春季学期-创新设计与实践-Lesson5
  2. Linux 系统之软件管理
  3. jcmd 命令_jcmd:一个可以全部统治的JDK命令行工具
  4. 斗鱼上市进行时:将登陆纳斯达克 发行价区间定为11.5至14美元
  5. Java Elasticsearch 使用
  6. Hive采集数据框架flume
  7. stm32f030移植到stm32f072
  8. 前端学习——页面布局
  9. NAS组建日记(二):为了玩得自由,还是DIY个NAS机吧
  10. 训练集和验证集的划分
  11. 理想,努力了才叫梦想,放弃了那只是妄想
  12. python爬取bilibili弹幕_python 爬取bilibili 视频弹幕
  13. 机智云(esp8266)与74hc595控制16路继电器
  14. ahk写入excel单元格_输出excel数据到GUI 获取excel所有Sheet及字段 Autohotkey
  15. gre阅读passage71-105
  16. MongoDB日常运维之用户管理
  17. 调试抖音App(教程)
  18. 使用nginx实现请求转发的功能
  19. 幽默感七个技巧_培养幽默感的16种方法
  20. 5v1a充电损坏电池_为什么您不应该麻烦维修损坏的充电电缆

热门文章

  1. wordpress 表格文字对齐_Word文字对齐还用空格键?OUT了,这3个文字对齐方式你值得拥有!...
  2. python界面开发工具免费_Python程序员必备的四款开发工具
  3. java存储过程与sql语句_存储过程与SQL语句怎么选择
  4. mysql 删除重复数据_MySQL查找和删除重复数据
  5. vant 软键盘_移动端页面输入底部被软键盘遮挡问题
  6. phonegap html 缩放,phonegap常用事件总结(必看篇)
  7. 人事软件测试自学,自学软件测试什么课程
  8. vfifo控制mig_MIG IP控制DDR3读写测试
  9. python 画漫画_在漫画中画一条直线,罗宾逊投影
  10. Anaconda安装tenserflow