Opencv2.3 和 Qt Creator 2.4.1 链接器错误

Posted

技术标签:

【中文标题】Opencv2.3 和 Qt Creator 2.4.1 链接器错误【英文标题】:Opencv2.3 and Qt Creator 2.4.1 linker error 【发布时间】:2012-05-30 04:50:47 【问题描述】:

我正在运行 opencv 和 qt。我已成功添加了 opencv 的包含。但是当我执行 cvLoadImage 时,出现链接器错误。

这是我的代码:

void MainWindow:on_pushButton_clicked()


img = cvLoadImage("C:\\Users\\MLS-PROGRAMER\\Documents\\Visual Studio 2010\\Projects\\Image_processing\\Image_processing \\thres.png");
// cvNamedWindow("Image",CV_WINDOW_AUTOSIZE);
// cvShowImage("Image", img);
// cvWaitKey(40);


这是错误信息:

mainwindow.obj:-1: error: LNK2019: unresolved external symbol _cvLoadImage referenced in function "private: void __thiscall MainWindow:n_pushButton_clicked(void)" (?on_pushButton_clicked@MainWindow@@AAEXXZ)

debug\FIDAS.exe:-1: error: LNK1120: 1 unresolved externals

我的项目文件是这样的

#-------------------------------------------------
#
# Project created by QtCreator 2012-05-29T10:31:40
#
#-------------------------------------------------

QT += core gui

TARGET = FIDAS
TEMPLATE = app


SOURCES += main.cpp\
mainwindow.cpp

HEADERS += mainwindow.h

FORMS += mainwindow.ui


INCLUDEPATH += C:\OpenCV2.3\opencv\build\include\opencv2\core \
C:\OpenCV2.3\opencv\build\include\opencv \
C:\OpenCV2.3\opencv\build\include\opencv2\imgproc \
C:\OpenCV2.3\opencv\build\gpu\x64\lib \

CONFIG(release,debug|release)

LIBS += C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_calib3d231.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_contrib231.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_core231.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_features2d231.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_flann231.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_gpu231.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_haartraining_engine.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_highgui231.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_imgproc231.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_legacy231.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_ml231.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_objdetect231.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_ts231.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_video231.lib \


CONFIG(debug,debug|release)

LIBS += C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_calib3d231d.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_contrib231d.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_core231d.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_features2d231d.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_flann231d.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_gpu231d.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_haartraining_engined.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_highgui231d.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_imgproc231d.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_legacy231d.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_ml231d.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_objdetect231d.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_ts231d.lib \
C:\OpenCV2.3\opencv\build\gpu\x64\lib\opencv_video231d.lib \

对这个问题的任何帮助都会很棒。?

【问题讨论】:

也添加 opencv_highguid231.lib 然后尝试... 那些空间真的存在吗? @spyke 我这样做了,但输出没有变化 @lakshmikant 库的顺序是相关的(至少在 Linux 上),尝试将 highgui 放在首位,然后将核心放在最后,反之亦然。在 Linux 上,链接器尝试从最后一个到第一个解析符号。 @bjoernz 我也试过了..没有成功。 【参考方案1】:

我在自己的项目中使用这样的配置:

LIBS += D:/OpenCV-2.3.0/build/lib/libopencv_core230.dll.a

我使用 C++ API 而不是 C API,即 imread 而不是 cvLoadImage

【讨论】:

我这样做了,但程序在构建时不会运行。它将退出“应用程序未成功运行”。我怀疑与 64 位库有关。太混乱了。 在qtcreator外面运行,看看需要什么dll,然后把dll目录路径加到PATH中 可能是gpu相关问题【参考方案2】:

您实际上应该指定链接路径(在哪里可以找到库),然后是要链接的库列表:

LIBS += -L C:\OpenCV2.3\opencv\build\gpu\x64\lib -lopencv_contrib231 -lopencv_core231 -lopencv_features2d231 ...

【讨论】:

【参考方案3】:

Step 8 为所有架构描述了它。

基本上,您必须使用 -L 指定库路径,然后使用添加库文件

-l<libname_without_extension>

对于 unix(安装在默认位置):

unix: LIBS += -lopencv_core
unix: LIBS += -lopencv_highgui

对于 Windows(您的问题):

win32: LIBS += -L C:\OpenCV2.3\opencv\build\gpu\x64\lib\ -lopencv_core231

【讨论】:

以上是关于Opencv2.3 和 Qt Creator 2.4.1 链接器错误的主要内容,如果未能解决你的问题,请参考以下文章

Qt Creator 2.6.2 和 Qt 4.8.4:Qt 版本未正确安装

Qt Creator 2.7.1 和 Qt 4.8.4 无法远程调试库

qt creator源码全方面分析(2-0)

使用 qt-creator 将库项目链接到 qt 控制台/小部件项目

qt creator源码全方面分析(2-3-1)

qt creator源码全方面分析(2-3-2)