2

这儿存在一个问题。我需要将 ffmpeg(尤其是 libavcodec)静态链接到 Visual Studio 2008 项目中。

我在互联网上找到了一些视觉工作室解决方案,但它们很旧(大约 0.6 版本),我需要最新版本,所以这种方式不适合我。

接下来,我使用 MinGW/msys 进行静态构建(使用 --enable-satic --disable-shared 标志)并在输出中获得 (*.a) 库。在 Visual Studio 中,我转到链接器属性并添加到 Additional Dependencies(Linker->Input) libvacodec.a 和 libgcc.a。然后我写了一个简单的应用程序:

#include <stdio.h>
#include <stdlib.h>
extern "C"
{
   #ifdef  __STDC_CONSTANT_MACROS
      #define __STDC_CONSTANT_MACROS
   #endif
      #include "libavcodec/avcodec.h"    
 }



#include "libavformat/avformat.h"

      int main()
   {
    av_register_all();
    return 0;
   }

此代码编译成功,但链接失败。得到一个错误:

error  LNK2019: unresolved external symbol "void __cdecl av_register(void)" (?av_register_all@@YAXXZ) referenced in function _main.

所以,有两个问题:

  1. 如何将 Visual Studio 应用程序与 libavcodec.a 链接?

  2. 如果可能的话,我在哪里可以获得包含 ffmpeg 最新版本的 Visual Studio 解决方案?

提前致谢!!

4

1 回答 1

0
  1. 就像您使用 .lib 文件一样。.a 是同一事物,但名称不同。如果对您来说更容易,请将 libavcodec.a 重命名为 libavcodec.lib。

  2. 无处。

于 2013-06-23T21:37:38.030 回答