在Visual Studio中静态链接ffmpeg lib

时间:2014-09-21 13:26:31

标签: windows visual-studio-2010 ffmpeg static-libraries

我试图在VS2010上的C ++项目中使用ffmpeg,而ffmpeg dev版本提供了.h文件的lib。我在我的项目中链接了这些.libs,并且在运行.exe文件时需要相应的.dll。但我想静态链接ffmpeg lib并在没有.dlls的情况下运行。

我尝试使用Mingw在Windows上编译ffmpeg源代码,只产生一些.a存档文件。如何获取ffmpeg静态.lib文件?它是一个64位程序,因此需要64位静态库。

1 个答案:

答案 0 :(得分:2)

在输出目录中,您有一些*.def个文件。您可以使用这些文件来获取*.lib个文件。语法是:

lib /def:avcodec-54.def /out:avcodec-54.lib

使用VS版本的lib.exe。我的位于C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin。检查命令行选项(这有助于添加/machine:i386)。

另一种方法:不是直接使用Windows cmd启动msys / mingw,而是先启动VS命令提示符(可以从“开始”菜单启动)。它将设置一些环境变量。从这里开始,使用msys / mingw编译FFmpeg:FFmpeg build将自动检测VS是否存在,从而自动执行lib调用。

编辑:抱歉,我跳过了问题的“静态”部分。以下是静态构建的一些提示(请注意,我从未构建过在visual studio中使用的静态FFmpeg,因此可能不起作用)。 首先,当然,FFmpeg必须使用静态选项构建:只是为了确保,我使用这些选项,所以我没有共享文件的.def:

./configure --enable-static --disable-shared [other options]

为了拥有静态文件,你可以直接使用.a文件(再次:我从不反对过)。检查this question

如果它不起作用,你可以尝试使用visual studio toochain而不是gcc。但要小心:上次我尝试了这个(但是共享的dll),从msvc构建时,FFmpeg解码比gcc的输出慢。请查看this page以获取详细的构建说明。