如何将 Windows 上的 opencv DLL 添加到 QTCreator 项目?

Posted

技术标签:

【中文标题】如何将 Windows 上的 opencv DLL 添加到 QTCreator 项目?【英文标题】:How to add opencv DLL on Windows to QTCreator project? 【发布时间】:2018-06-08 06:32:30 【问题描述】:

我已经构建了 opencv 并将这些行添加到 .pro 文件中:

INCLUDEPATH += C:/opencv-3.4.1/build/install/include

LIBS += C:\opencv-3.4.1\build\LIB\Debug\opencv_core341d.lib
LIBS += C:\opencv-3.4.1\build\LIB\Debug\opencv_highgui341d.lib
LIBS += C:\opencv-3.4.1\build\LIB\Debug\opencv_imgcodecs341d.lib
LIBS += C:\opencv-3.4.1\build\LIB\Debug\opencv_imgproc341d.lib
LIBS += C:\opencv-3.4.1\build\LIB\Debug\opencv_features2d341d.lib

现在如果我启动项目,它会成功链接但无法启动:

Starting C:\Users\steve\Documents\build-qttest4-Desktop_Qt_5_11_0_MSVC2015_64bit-Debug\debug\qttest4.exe...
The program has unexpectedly finished.
The process was ended forcefully.

我可以告诉 QTCreator 添加 DLL 文件以将 opencv DLL 文件放入 build-qttest4-Desktop_Qt_5_11_0_MSVC2015_64bit-Debug 文件夹吗?

【问题讨论】:

【参考方案1】:

这是一个解决方案(与***谷歌搜索教程不匹配):

INCLUDEPATH += C:/opencv-3.4.1/build/install/include
LIBS += C:\opencv-3.4.1\build\LIB\Debug\opencv_core341d.lib
LIBS += C:\opencv-3.4.1\build\LIB\Debug\opencv_highgui341d.lib
LIBS += C:\opencv-3.4.1\build\LIB\Debug\opencv_imgcodecs341d.lib
LIBS += C:\opencv-3.4.1\build\LIB\Debug\opencv_imgproc341d.lib
LIBS += C:\opencv-3.4.1\build\LIB\Debug\opencv_features2d341d.lib
LIBS += -L"C:/opencv-3.4.1/build/bin/Debug"

别忘了运行 Build->Run qmake

【讨论】:

当然 LIBS+= -L "" 是最简单的解决方案【参考方案2】:

在某些 Windows 应用程序中使用 DLL 有两种方法

    使用 WinAPI LoadLibrary 函数和 GetProcAddress 函数。

    在 Qt PRO 文件中设置 LIB 文件的位置,该位置将告诉应用程序二进制代码在 YourLibraryName.DLL 中。但是当您运行调试器时,应用程序不知道 DLL 在哪里。一种可能的解决方案是将opencv DLL文件夹的完整路径放入Windows控制面板中的PATH环境变量

【讨论】:

以上是关于如何将 Windows 上的 opencv DLL 添加到 QTCreator 项目?的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 2.4 staticlib 链接仍然依赖 DLL? [视窗]

使用 CMake 将 Qt DLL 复制到 Windows 上的可执行目录

windows server中opencv运行过程中MF.dll/MFReadWrite.dll/MFPlat.DLL文件丢失问题解决

如何知道opencv中是不是激活了SSE2

Python 3.5、OpenCV 3.2、Windows 7 64 位、Anaconda 3、“ImportError:DLL 加载失败”

Windows:Python + OpenCV + Qt:“import cv2”给出“dll not found”错误