/usr/bin/ld: /tmp/: undefined reference to symbol ‘_ZN2cv6imreadERKSsi‘ rror adding symbols: DSO mis

在某个项目中把opencv2.4升级到4.4时,遇到下面的错误:

 /usr/bin/ld: /tmp/ccV9xYuG.o: undefined reference to symbol '_ZN2cv6imreadERKSsi'
/opt/opencv-4.4.0-build/lib64/libopencv_imgcodecs.so.4.4: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [all] Error 1

错误的原因是我代码中用到了imread函数,但是我的makefile中只有LIBS   += -lopencv_video -lopencv_imgproc -lopencv_highgui -lopencv_core 忘记加 -lopencv_imgcodecs,这样链接的时候就去系统目录下找这个库,但是系统目录下的这个库是老的,于是就出现了用4.4的头文件和2.4的库的问题,不匹配,编译报错,

解决方法是修改makefile,LIBS   += -lopencv_video -lopencv_imgproc -lopencv_highgui -lopencv_core -lopencv_imgcodecs把-lopencv_imgcodecs这个库加上就好了。

你可能感兴趣的:(#,OpenCV)