在QT5上配置opencv3,运行第一个程序时出现以下错误,解决方法也po出:
错误一:
-1: error: mainwindow.o: undefined reference to symbol '_ZN2cv6imreadERKNS_6StringEi'
/usr/local/lib/libopencv_imgcodecs.so.3.4:-1: error: error adding symbols: DSO missing from command line
-1: error: collect2: error: ld returned 1 exit status
解决方法:从错误提示里可以看出,需要链接libopencv_imgcodecs.so,这个应该是opencv3和opencv2的区别,导致程序编译链接出错。(因为我用的例程是基于opencv2的)添加到库后,如下
INCLUDEPATH += /usr/local/include \
/usr/local/include/opencv \
/usr/local/include/opencv2
LIBS += /usr/local/lib/libopencv_highgui.so \
/usr/local/lib/libopencv_core.so \
/usr/local/lib/libopencv_imgproc.so \
/usr/local/lib/libopencv_imgcodecs.so
错误二:
-1error: 'class QString' has no member named 'toAscii'(class QChar)
解决方法:在Qt4中QString类和QChar类都有toAscii()用于转为char(ASCii码),但是在Qt5中没有,可以用函数char toLatin1() const
替代原函数。(我差点就自己动手写了)
错误三:
-1: error: file not recognized: File truncated
解决方法:Build -> rebuild All
这个错误有可能出现在上一次构建被中断之后,并且没有完全生成目标文件。(出现这个神奇的错误之前我电脑正好构建到一半就死机了)