【发布时间】:2021-03-20 23:47:11
【问题描述】:
TLDR: 将 OpenCV 与 QT MingW 链接会导致应用程序在 Debug 中崩溃但不会在发布时崩溃。
我正在尝试在基于 Qt 的大型多操作系统项目中使用 OpenCV。我已经轻松地为 Mac 和 Linux 构建了 OpenCV,但在 Windows 上使用它却非常困难。
环境:
Qt 5.12.2 MinGW
MinGW 8.1.0 64 位
OpenCV 基本上是 4.1.0 以后的所有版本
CMake 3.19
我尝试了什么
-
我首先尝试按照他的链接 https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows 从源代码构建 OpenCV,但在调试中运行应用程序时遇到了一些问题,例如在 opencv 库中找不到入口点(下面的确切错误)
-
我最近使用它的 pacman 使用了 MSys2 的预构建包,并尝试了 4.2 到 4.5 版本,但没有真正成功。我设法从 msys 的安装路径 (C:\msys64\mingw64\bin) 链接 OpenCV 库,并使用环境 PATH 中的这个路径,我能够使用 Qt 生成的 .exe 启动应用程序。但是,一旦我将所需的库拖到我们的第三方库文件夹中进行部署,应用程序就无法在 Debug 中启动(使用 Qt 或使用 .exe)。
-
我尝试了发布模式,一切正常
现在每次我在 Debug 中使用 Qt 运行应用程序时,程序都会立即崩溃,甚至没有进入主程序。使用.exe时出现以下错误:
我发现这可能是一个 TBB 问题,所以我尝试使用与 MSys 不同的版本,但没有成功。
我试图从 Qt 更改 PATH 变量以进行构建和运行,但没有成功。
我的 .pri 中的包含和 Libs 使用如下(它们都在构建过程中找到)
INCLUDEPATH += -I $$PWD/../../ext/OpenCV/include/opencv4
DEPENDPATH += -$$PWD/../../ext/OpenCV/include/opencv4
LIBS += -L$$PWD/../../ext/OpenCV/lib/$$OSFOLDER/$$ARCHFOLDER -lopencv_imgproc430
LIBS += -L$$PWD/../../ext/OpenCV/lib/$$OSFOLDER/$$ARCHFOLDER -lopencv_core430
LIBS += -L$$PWD/../../ext/OpenCV/lib/$$OSFOLDER/$$ARCHFOLDER -lopencv_dnn430
LIBS += -L$$PWD/../../ext/OpenCV/lib/$$OSFOLDER/$$ARCHFOLDER -lopencv_imgcodecs430
LIBS += -L$$PWD/../../ext/OpenCV/lib/$$OSFOLDER/$$ARCHFOLDER -lopencv_highgui430
【问题讨论】: