我正在尝试部署我的C ++程序。如果我从VS IDE(发布模式)运行程序,则它的所有功能都可以使用。当我通常运行相同的可执行文件时,主窗口会正常显示,并且其非OpenCV功能可以正常工作;但是,当我尝试打开图片并使程序使用OpenCV东西时(打开它会调用图片上的几种OpenCV操作),它会崩溃。
我成功地从VS 2017的开发人员命令提示符中运行了windeployqt
。但是,它没有在可执行文件旁边复制OpenCV dll,因此我在其他dll旁边复制了opencv_world400.dll
和opencv_ffmpeg400_64.dll
。我认为这是我缺少某些东西的步骤。
该文件夹现在看起来像这样:
我正在将VS2017与Qt5.10.1和OpenCV4.0一起使用。我不认为我可以插入相关代码,因为该项目很大,并且广泛使用OpenCV功能。
答案 0 :(得分:0)
我发现,问题与OpenCV无关(opencv_world400.dll
足以复制到文件夹中。)
问题是:我使用Qt的applicationDirPath()
(返回可执行文件的路径)访问我以前在那创建的 Results 文件夹,但没有。如果我是从VS运行的,则该程序正在访问 Debug 文件夹中的现有 Results 文件夹,即使我在发布模式下运行该程序并且applicationDirPath()
在 Release 文件夹中返回可执行文件的路径。通常,当我运行相同的可执行文件时,它找不到 Results 文件夹并崩溃了。