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

时间:2019-01-04 02:39:53

标签: c++ qt opencv deployment release

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

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

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

1 个答案:

答案 0 :(得分:0)

我发现,问题与OpenCV无关(opencv_world400.dll足以复制到文件夹中。)

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