为Visual Studio编译FFMpeg库

4
我正在尝试在Windows应用程序中使用FFMpeg库。我使用MingW-w64编译FFMpeg,使用x86和x86_64架构分别编译静态库一次。目前,我正在尝试将32位x86库与我的VS2008应用程序链接起来。库已添加到库路径中,VS没有抱怨无法加载.a文件。
但是,我遇到了几个未解决的符号错误,例如ait_rtp_receiver.lib(ait_decoder_lib.obj) : error LNK2001: unresolved external symbol _av_free。
我将FFMpeg头文件作为extern C导入,并且可以在.a中看到没有前导下划线的符号。我该怎么做才能使Mingw-w64的gcc和VS编译器套件的名称装饰兼容?

1
为什么会被踩?我认为我已经添加了所有细节来简洁地描述问题。 - LostBoy
2
将FFMpeg构建为*.dlls(--enable-shared),然后使用生成的import *.lib与MSVC进行链接。使用MSVC链接静态MinGW库是一件非常麻烦的事情,因为您还必须链接libgcc.a、libgcc_eh.a等其他库。因此,最好通过编译dlls来解决问题。 - Thomas
1个回答

9
在尝试使用基于GCC-Mingw的版本构建FFMpeg并使其正常工作的几天里,我感到非常痛苦,因此我回归使用Visual Studio或Windows SDK编译器和链接器。使用configure脚本的--toolchain=msvc选项可以生成静态.a文件,这些文件基本上是可以在Visual Studio项目中加载的.lib文件。
我已经编写了构建步骤,并在此处提供了一个链接:link

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接