【问题标题】:Entry point not found on OpenCV dll with Qt 5.12在 Qt 5.12 的 OpenCV dll 上找不到入口点
【发布时间】: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

【问题讨论】:

    标签: c++ qt opencv dll


    【解决方案1】:

    好的,我终于设法让它工作了! 正如我在问题中所说,当 TBB 版本不正确时,有时会发生此错误,所以这就是我所做的:

    • 使用此存储库手动构建 TBB:https://github.com/wjakob/tbb,其中包含官方存储库的基于 CMake 的构建系统:https://github.com/oneapi-src/oneTBB

    • 使用您稍后将在应用程序中使用的编译器构建具有所需版本的 OpenCV:

      • 取消选中“BUILD_TBB”,选中“WITH_TBB”并指向之前构建的 TBB 库并包含在内。
      • 添加您需要的标志(例如 OPENCV_ENABLE_ALLOCATOR_STATS=OFF)并构建它。
    • 最后从“path/to/opencv-build/bin”而不是“path/to/opencv-build/install/bin”添加库(也许这是我们应该一直做的,但我不确定)和它对我有用!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 2012-03-13
      • 2020-03-06
      • 2011-06-07
      • 1970-01-01
      相关资源
      最近更新 更多