我正在VS2010上的C ++项目中尝试使用ffmpeg,而ffmpeg开发版本提供了.h文件的库。我将这些.libs链接到了我的项目中,并且在运行.exe文件时需要相应的.dlls。但是我想静态地链接ffmpeg库,并在没有.dll的情况下运行。
我试图用Mingw在Windows上编译ffmpeg源代码,仅产生了一些.a存档文件。如何获取ffmpeg静态.lib文件?它是一个64位程序,因此需要64位静态库。
在输出目录中,您有一些*.def
文件。您可以使用这些文件来获取*.lib
文件。语法为:
lib /def:avcodec-54.def /out:avcodec-54.lib
使用lib.exe
您的VS版本。我的位于C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin
。检查命令行选项(添加会很有用/machine:i386
)。
执行此操作的另一种方法:cmd
首先直接启动VS命令提示符(您可以从“开始”菜单启动它),而不是直接使用Windows的Windows启动msys / mingw。它将设置一些环境变量。从这里开始,使用msys / mingw编译FFmpeg:FFmpeg构建将自动检测到VS存在,因此将自动执行lib
调用。
编辑:对不起,我跳过了问题的“静态”部分。这是静态构建的一些技巧(请注意,我从未构建过在Visual Studio中使用的静态FFmpeg,因此也许无法正常工作)。首先,当然,FFmpeg必须使用静态选项构建:为确保使用这些选项,因此我没有共享文件的.def:
./configure --enable-static --disable-shared [other options]
为了拥有静态文件,您可以直接使用.a文件(再次:我从来没有对此感到惊讶)。检查这个问题。
如果它不起作用,则可以尝试使用Visual Studio toochain而不是gcc。但是要小心:上次我尝试此操作(但使用共享dll)时,从msvc构建时,FFmpeg解码的速度比gcc的输出要慢。查看此页面以获取详细的构建说明。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句