在Windows 7上运行应用程序时未加载OpenCV ffmpeg DLL,适用于8和10

时间:2016-11-01 17:43:18

标签: c++ opencv ffmpeg windows-7

我需要维护一个用C ++编写的桌面应用程序,使用Qt和OpenCV进行一些视频处理。据我所知,出于许可原因,OpenCV的解码部分被委托给单独的DLL中的ffmpeg。

开发环境在Windows 10上,使用QT Creator和64位MSVC12作为编译器。 OpenCV版本是3.0,正式发布。在这里,一切运行正常,我能够使用VideoCapture :: open()解码视频。

当我尝试以独立方式运行应用程序时出现问题,所有必需的DLL与.exe文件位于同一文件夹中。以下所有案例均为64位操作系统。

在Windows 10计算机上,与开发机器不同,没有开发人员库,视频解码工作正常。我也在Windows 8机器上进行了测试,到目前为止没有问题。

在Windows 7上,事情变得棘手。应用程序根本无法识别在先前测试期间成功加载的相同视频文件,即VideoCapture上的isOpened调用返回false。为了进一步测试,我剥离了opencv_ffmpeg300_64.dll文件以缩小Windows 10和8的问题;正如预期的那样,没有这个DLL,应用程序就无法打开相同的视频文件。

似乎在Windows 7上无法识别DLL。

编辑:使用Process Explorer进行的进一步调查清楚地表明,当应用程序在Windows 7上运行时,不会加载上述DLL。

  • 是否有关于Windows 7如何管理DLL路径解析和最终安全措施的具体内容?看起来很正常,第一个搜索位置与可执行文件是同一个文件夹,就是这里的情况。

我尝试使用WinApiOverride32进行跟踪,没有结果。

2 个答案:

答案 0 :(得分:0)

更具体地说,错误数据opencv_ffmpeg.dll可能由以下原因引起:

  • opencv_ffmpeg.dll的错误或损坏的注册表项
  • 损坏opencv_ffmpeg.dll文件的病毒或恶意软件。
  • 硬件故障,例如,导致的低质量硬盘           损坏的文件opencv_ffmpeg.dll。
  • 另一个程序更改了所需的opencv_ffmpeg.dll版本。
  • 另一个程序恶意或错误地删除了该文件          opencv_ffmpeg.dll。
  • 另一个程序删除了opencv_ffmpeg.dll。

Building and Installing OpenCV with Extra Modules on Windows 7 64-bit

答案 1 :(得分:0)

自动应答......

几个月前,通过升级到该项目的OpenCV 3.1,问题得到了解决。可能是以前版本库中的一些错误