首页 > 解决方案 > 使用 Qt 的程序,OpenCV 从 VS 启动时运行良好,但在使用 OpenCV 功能时运行可执行文件通常会崩溃

问题描述

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

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

我正在使用带有 Qt5.10.1 和 OpenCV4.0 的 VS2017。我不认为我可以插入相关代码,因为该项目很大并且它广泛使用 OpenCV 功能。

标签: c++qtopencvdeploymentrelease

解决方案


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

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


推荐阅读