ubuntu 下 make 编译错误:undefined reference to cv::line

本文详细解析了在编译项目时遇到的“undefined reference to cv::line”错误,该错误源于AprilTags静态库与不同OpenCV版本的不兼容。文章提供了两种解决方案:一是调整OpenCV版本至2.4.8,二是重新编译AprilTags库以匹配OpenCV 3.1.0。
摘要由CSDN通过智能技术生成

在编译一个项目时候出现 “undefined reference to cv::line” 的错误,是在链接其中一个静态库的时候出现的错误,错误如下:

/home/build/lib/libapriltags.a(TagDetection.cc.o): In function `AprilTags::TagDetection::draw(cv::Mat&) const':
TagDetection.cc:(.text+0x960): undefined reference to `cv::line(cv::Mat&, cv::Point_<int>, cv::Point_<int>, cv::Scalar_<double> const&, int, int, int)'
TagDetection.cc:(.text+0x9f9): undefined reference to `cv::line(cv::Mat&, cv::Point_<int>, cv::Point_<int>, cv::Scalar_<double> const&, int, int, int)'
TagDetection.cc:(.text+0xa93): undefined reference to `cv::line(cv::Mat&, cv::Point_<int>, cv::Point_<int>, cv::Scalar_<double> const&, int, int, int)'
TagDetection.cc:(.text+0xb06): undefined reference to `cv::line(cv::Mat&, cv::Point_<int>, cv::Point_<int>, cv::Scalar_<double> const&, int, int, int)'

       就上网查了一下,发现很多关于undefined reference这样的问题,但是原因大多很复杂,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对其他遇到这种问题的有所帮助。

       经过多方面的排查发现,出现这个原因是因为AprilTags这个静态库的问题。 由于这个代码是从别人那接手的,在配置环境的过程中出现的这个问题。由于AprilTags这个静态库别人在编译的时候是基于他的环境,即基于opencv2.4.8编译的,我用的环境是opencv3.1.0的版本,但是之前不知道是这个问题。

        所以解决办法有两种,一种是使用和AprilTags这个静态库编译时相同的opencv版本,即使用opencv2.4.8, 另一种方法是 在opencv3.1.0下重新将AprilTags这个静态库编译一遍。

        一般出现这种问题都很隐秘,在解决的时候要多方面排查。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值