栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

调用OpenCV库出现: undefined reference to `xxxxx‘ 的解决办法(使用MinGW编译器)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

调用OpenCV库出现: undefined reference to `xxxxx‘ 的解决办法(使用MinGW编译器)

记录OpenCV正确安装与调用过程

我的CMakeLists.txt如下:

cmake_minimum_required(VERSION 3.18)
project(test)
 
set(CMAKE_CXX_STANDARD 11)
# set(OpenCV_DIR "XXX") 
# xxxx目录包含OpenCVConfig.cmake
set(OpenCV_DIR "G:\opencv\mingw64_build")

# 寻找OpenCV库
find_package( OpenCV REQUIRED )
 
# 添加头文件
include_directories( ${OpenCV_INCLUDE_DIRS} )
 
# 链接OpenCV库
add_executable(test test01.cpp)
target_link_libraries(test ${OpenCV_LIBS})

cpp代码如下:

#include 
#include 
#include 
#include 
#include 
#include
using namespace std;
using namespace cv;

int main()
{
    Mat images;
    images = imread("1.jpg",0);
    cv::Mat grayim;
    Size dsize = Size(120, 160);
    Mat shrink;
    resize(images, shrink, dsize, 0, 0, INTER_AREA);
    imwrite("after.jpg", shrink);
    cout<<"处理完成!"< 

因为我的c++程序采用mingw64编译,所以使用

cmake -G "MinGW Makefiles" ..       // 相当于cmake ..
mingw32-make                       // 相当于make

之后,总是出现undefined reference to cv::Mat::Mat()等一系列的undefined reference to XXX
原因是没有正确链接到动态库。或者之前有安装其他版本的opencv

解决办法

重新编译一份OpenCV的源码再使用


编译过程参考:
https://blog.huihut.com/2018/07/31/CompiledOpenCVWithMinGW64/
https://github.com/huihut/OpenCV-MinGW-Build
第二个链接提供了已经有编译好opencv库,使用这个编译好的库的前提是自己的环境和作者的环境一样。所以还是自己编译吧。否则到最后会出现下图这样的问题:

这个错误是我下载上面链接提供的opencv库,cmake 、make 都没问题,最后执行可执行文件时,出现的错误。
其实就是版本的问题,后来我自己编译出来的动态库就是libopencv_core460.dll。就没有这样的问题。

最后还要添加环境变量
将bin目录加到系统的环境变量PATH里,方便程序在运行时能够找到对应的动态库。
将bin(G:opencvmingw64_buildbin)目录下的所有.dll文件复制到C:WindowsSystem32目录下, 否则会出现无法定位程序输入点…于动态链接库…上。如下图:

最后程序正常运行。


在这之前还将/Mingw/bin目录下的libstdc+±6.dll文件放在了C:WindowsSystem32目录下。不知道有没有发挥这个作用,也懒得验证了。

ubuntu也是一样的,gcc, g++版本样一样,编译自己写的程序使用的gcc/g++版本要和编译opencv库时使用的gcc/g++版本要一样。

如有错误之处,欢迎指正!

感谢以下博文:
https://stackoverflow.com/questions/69338088/error-while-configuring-cmake-project-running-nmake-failed

https://blog.csdn.net/qq_45662588/article/details/115949733

https://blog.csdn.net/diaolunlaoshi/article/details/117451891

https://blog.huihut.com/2018/07/31/CompiledOpenCVWithMinGW64/

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976782.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号