使用 Qt 的程序,从 VS 启动时 OpenCV 运行良好,但 运行 当使用 OpenCV 功能时,可执行文件通常会崩溃

Program using Qt, OpenCV runs fine when started from VS, but running the executable ordinarily crashes when OpenCV functionality would be used

我正在尝试部署我的 C++ 程序。如果我 运行 来自 VS IDE(发布模式)的程序,它的每个功能都有效。当我通常 运行 相同的可执行文件时,主要的 window 运行良好并且其非 OpenCV 功能有效;但是当我尝试打开一张图片并让程序使用 OpenCV 的东西(打开它会调用对图片的几个 OpenCV 操作的使用)时,它崩溃了。

I 运行 windeployqt 从 VS 2017 开发人员命令提示成功。不过,它没有将 OpenCV dll 复制到我的可执行文件旁边,所以我将 opencv_world400.dllopencv_ffmpeg400_64.dll 复制到其他 dll 旁边。我认为这是我遗漏了一些东西的步骤。 该文件夹现在看起来像这样:

我将 VS2017 与 Qt5.10.1 和 OpenCV4.0 一起使用。我不认为我可以插入相关代码,因为该项目非常大并且它广泛使用 OpenCV 功能。

我弄明白了,这个问题与 OpenCV 无关(opencv_world400.dll 足以复制到文件夹中)。

问题是:我使用 Qt 的 applicationDirPath()(returns 可执行文件的路径)来访问我之前应该创建的 Results 文件夹有,但没有。该程序,如果来自 VS 运行,正在访问 Debug 文件夹中现有的 Results 文件夹,即使我是 运行 程序处于发布模式,applicationDirPath() 返回 Release 文件夹中的可执行文件路径。当我 运行 正常执行相同的可执行文件时,它找不到 Results 文件夹并崩溃。