windows-10 - 尝试为 Windows 10 (x86_64) 静态编译 FFmpeg 4.2.3,但二进制文件要求缺少 DLL

标签 windows-10 ffmpeg compilation mingw msys

我正在使用 Msys MinGW (x86_64) 并从他们的网站上提取了 FFmpeg 最新主要版本的快照。这是我的./configure选项。我计划在我编译它的计算机和我拥有的其他 Windows 计算机上使用这些二进制文件。

./configure --enable-libaom --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --enable-libgme --enable-libmfx --enable-libkvazaar --enable-libmp3lame --enable-libilbc --enable-libvpx --enable-libmodplug --enable-version3 --enable-nonfree --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --enable-libfdk-aac --enable-libopenh264 --enable-libopenjpeg --enable-nvenc --enable-nvdec --enable-cuda --enable-cuvid --enable-libtwolame --enable-vapoursynth --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxavs2 --enable-gpl --enable-static --disable-shared

Output of configure script (pastebin)
uname -a 的输出(在 Msys 中)
MINGW64_NT-10.0-18362 <scrubbed> 3.1.4-340.x86_64 2020-05-22 08:28 UTC x86_64 Msys

我面临的问题是,尽管通过了选项 --enable-static--disable-shared ,生成的可执行文件仍然需要libchromaprint.dll , libfdk-aac-2.dll , 和 libgme.dll运行。我所期望的是 FFmpeg 将独立于任何 DLL 文件执行,因为我将这些选项传递给 ./configure。 .

最佳答案

即使您指定 --enable-static在没有找到静态库的情况下可以使用共享库。您应该会收到来自 libtool 的警告关于这个在构建过程中。

所以如果它寻找 libchromaprint.a找不到它会链接到libchromaprint.dll.a导致对DLL的依赖。

检查依赖关系以查看它们的静态库是否可用(在您的情况下为 libchromaprint.alibfdk-aac-2.alibgme.a )。

关于windows-10 - 尝试为 Windows 10 (x86_64) 静态编译 FFmpeg 4.2.3,但二进制文件要求缺少 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62043032/

相关文章:

video - 如何使用 ffmpeg "merge"2 VR180 视频文件获得 360 视频 (2xVR180) 输出?

opencv - FFMpeg、AVFrame 和 AVBuffer

node.js - 如何即时将视频 *.ts 转换为 *.mp4 并在网络上播放 (node.js)

javac 表示 int (x = 1);不是声明然后说预期的 ';'。我的代码有什么问题?

sql - 有没有办法通过 tsql 获取 Windows 任务管理器详细信息?

python - linter-flake8 和atom Windows 10 cmd.exe 路径

c++ - Windows 10 上的 GetTickCount 值

c# - 如何在 Windows Universal App 中使用双工 wcf 服务

.net - Visual Studio 编译时间统计

c - 内存段定义在哪里?