在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
這個錯誤有可能出現在上一次構建被中斷之後,並且沒有完全生成目標文件。(出現這個神奇的錯誤之前我電腦正好構建到一半就死機了)