我试图在VS2010上的C ++项目中使用ffmpeg,而ffmpeg dev版本提供了.h文件的lib。我在我的项目中链接了这些.libs,并且在运行.exe文件时需要相应的.dll。但我想静态链接ffmpeg lib并在没有.dlls的情况下运行。
我尝试使用Mingw在Windows上编译ffmpeg源代码,只产生一些.a存档文件。如何获取ffmpeg静态.lib文件?它是一个64位程序,因此需要64位静态库。
答案 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以获取详细的构建说明。