我需要维护一个用 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。
我尝试使用 WinApiOverride32 进行跟踪,但没有结果。
最佳答案
更具体地说,错误数据 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/