我想使用MSYS2环境工具从官方git源代码为Windows构建独立的静态链接ffmpeg二进制文件。但是,每次我将动态链接到mingw库的.exe文件都崩溃,并显示“应用程序无法正确启动(0xc000007b)”错误,即使我放入所需的libbz2-1.dll,libiconv-2.dll和libwinpthread-1。文件夹中的dll库。
我正在运行MSYS2环境,
msys2_shell.cmd -mingw64
行,并使用mingw64 / mingw-w64-x86_64-gcc 8.2.1 + 20181214-1编译器软件包。然后我运行./configure
./configure --pkg-config-flags=--static --disable-shared --enable-static
line-我竭尽全力用Google搜索的最佳选择。然后继续进行一般
make
make install
序列。
结果是,我得到的二进制文件可以在MSYS2环境中顺利运行,但是当我从主机Windows资源管理器或cmd运行它时,首先要求libbz2-1.dll,libiconv-2.dll和libwinpthread- 1.dll库,当我将它们放在二进制文件的文件夹中时,它们崩溃,并显示“应用程序无法正确启动(0xc000007b)”错误。
我已经在官方https://ffmpeg.zeranoe.com/forum/viewtopic.php?f=5&t=6439论坛上询问了此案,但已经有5天没有任何回复了。
关于动态链接库,我以某种方式通过从mingw64 \ x86_64-w64-mingw32 \ lib文件夹中删除* .dll.a文件得到了创可贴的解决方案。但这对我来说看起来并不干净。我想知道是否可以与某些编译器/ make /链接器参数或通过某种方式编辑./configure或Makefile文件进行静态链接?
还有0xc000007b错误仍然存在。
基于相同的MSYS2环境,我已经设法通过media-autobuild_suite获得了期望的结果,所以我知道可以以某种方式做到这一点。但是,我对所有这些* nix事情还是很陌生的,所以根本不了解它是bash脚本,更不用说它本身非常复杂了。我看到的唯一一件事是,它可以生成在本机Windows环境下运行的,不需要上面列出的dll的正确ffmpeg可执行文件。
根据我目前发现的所有Internet指南,我应该使用此工具集获得独立的Windows可执行文件,但它根本无法正常工作,我被困住了。请帮助。
答案 0 :(得分:1)
我遇到了同样的问题。为了解决这个问题,我尝试禁用所有外部库。
我的配置:
--enable-static --enable-gpl --disable-w32threads --disable-autodetect
编译后,我将 libwinpthread-1.dll 从 /mingw64/bin 复制到二进制文件的文件夹中。 (您可以使用 ldd ffmpeg.exe
打印共享库依赖项)
ffmpeg.exe 和 ffprobe.exe 可以成功运行。
使用 ffmpeg-4.4 & msys2-x86_64-20210419