将OpenCV库链接到Qt

Link OpenCV library to Qt

提问人:Dutchman 提问时间:11/1/2014 更新时间:8/19/2018 访问量:2014

问:

我正在尝试创建一个界面应用程序,我需要使用 OpenCV 在一个窗口中显示两个视频。我尝试过Qt,但是我遇到了一些错误,例如“未解析的外部符号”。我想我还没有很好地将Qt链接到OpenCV库。这是我的“.pro”文件:

#-------------------------------------------------
#
# Project created by QtCreator 2014 - 10 - 31T11:03 : 55
#
#-------------------------------------------------

QT += core gui

greaterThan(QT_MAJOR_VERSION, 4) : QT += widgets

TARGET = test_Qt
TEMPLATE = app


SOURCES += main.cpp\
dialog.cpp

HEADERS += dialog.h

FORMS += dialog.ui

INCLUDEPATH += D:\\OpenCV231\\opencv\\build\\include

LIBS += -LD:\\OpenCV231\\mybuild\\lib\\Debug \
    -lopencv_calib3d231d.lib \
    -lopencv_contrib231d.lib \
    -lopencv_core231d.lib \
    -lopencv_features2d231d.lib \
    -lopencv_flann231d.lib \
    -lopencv_gpu231d.lib \
    -lopencv_haartraining_engined.lib \
    -lopencv_highgui231d.lib \
    -lopencv_imgproc231d.lib \
    -lopencv_legacy231d.lib \
    -lopencv_ml231d.lib \
    -lopencv_objdetect231d.lib \
    -lopencv_ts231d.lib \
    -lopencv_video231d.lib

有人可以帮助我吗?谢谢

Qt OpenCV 未解析-外部

评论

1赞 László Papp 11/1/2014
删除 .lib 就足够了,所以使用 .静态库应该会自动找到。如果尝试显式指定扩展名,它将查找 .顺便说一句,我讨厌这些愚蠢的反对者,他们没有理由地投反对票。-lopencv_food(lib)opencv_food.lib.{lib/dll}

答:

1赞 László Papp 11/1/2014 #1

将足够的东西放在这些地方:.lib

-lopencv_calib3d231d.lib \
                    ^^^^

静态库应该会自动找到,所以只需改用以下架构:

-lopencv_calib3d231d \

如果尝试显式指定扩展名,它将查找 .(lib)opencv_food.lib.{lib/dll}

如果您希望选择整个静态库路径而不是动态库,也可以指定该路径。

评论

0赞 László Papp 11/1/2014
@Dutchman:你重新运行QMAKE了吗?如果是,你能显示错误消息吗?
0赞 Dutchman 11/1/2014
不,我没有使用 qmake。但是我用Cmake编译了OpenCV
0赞 László Papp 11/1/2014
@Dutchman:那一定是问题所在。请在QtCreator中在你自己的项目上重新运行qmake。如果您用鼠标右键单击您的项目,弹出菜单中有一个重新运行 qmake 选项。
0赞 Dutchman 11/1/2014
当我运行 qmake 时,没有错误。但是当我构建时,总是会出现诸如“未解析的外部符号”之类的错误
0赞 László Papp 11/1/2014
@Dutchman:请粘贴一个简单的示例,从字面上重现问题以及确切的错误输出。
0赞 IntenseCorona 8/19/2018 #2

虽然您可以手动编辑 .pro 文件,但可以使用“添加库...”来避免错误。Qt Creator中的向导。

下面列出的步骤可以在 Qt5 文档中找到: [http://doc.qt.io/qtcreator/creator-project-qmake-libraries.html][1] 在“添加库”部分下。

  1. 右键单击位于创建器左侧“项目窗格”中的项目文件...,然后选择“添加库...”
  2. 按照向导的说明进行操作

让我从这里补充一些具体内容......

  1. 选择“外部库”
  2. 对于“库文件”,导航到 opencv_worldXXX.lib 文件(或 opencv_worldXXXd.lib 文件,您会注意到,通过仅指定一个或另一个,向导会有一个复选框,该复选框会自动包含另一个) [例如...\opencv\build\x64\vc12\lib\opncv_world.lib]
  3. 对于“包含文件夹”,导航到构建中的“include”文件夹。[例如,...\opencv\build\include]
  4. 选择您的操作系统、动态/静态库(以合适者为准)
  5. 点击下一步,清理,然后运行!