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

标签 c++ opencv ffmpeg windows-7

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

开发环境在 Windows 10 上,使用 QT Creator 和 MSVC12 64 位作为编译器。 OpenCV 版本是 3.0,官方发行版。在这里,一切运行良好,我可以使用 VideoCapture::open() 解码视频。

当我尝试在与 .exe 文件相同的文件夹中使用所有必需的 DLL 以独立方式运行应用程序时,就会出现问题。以下所有情况均为 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 进行跟踪,但没有结果。

    最佳答案

    更具体地说,错误数据 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

    关于c++ - 在 Windows 7 上运行应用程序时未加载 OpenCV ffmpeg DLL,适用于 8 和 10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40365599/

    相关文章:

    c++ - OpenCV 中的转换概念

    python - cv2 destroyWindow() 在ros回调函数中不起作用

    linux - 如何将两个音频合并为一个,但使用第一个音频的长度?

    java - OpenCV java VideoDevice构造函数未知异常

    ffmpeg - 将带有时间线编辑(启用)的 ffmpeg 视频 delogo 过滤器应用于多个区域和多个时间帧不起作用

    C# 执行外部程序并捕获(流)输出

    c++ - 从 Ubuntu 运行一个可执行文件到 Debian

    c++ - name\GLOBAL 的句柄什么时候出现??被 build ?

    c++ - OpenCV 视频编辑?

    C++ Pimpl 与纯虚拟接口(interface)性能对比