1

正如标题所说,我一直在尝试让 ffmpeg/libav 库在 MSVC++ 2010 中工作。但是,在调试模式下编码时,我一直在以下错误中运行。

代码:

extern "C" 
{
    #ifndef __STDC_CONSTANT_MACROS
    #define __STDC_CONSTANT_MACROS
    #endif
    #include <libavcodec\avcodec.h>
    #include <libavformat\avformat.h>
    #include <libswscale\swscale.h>
    #include <libavutil\avutil.h>
}
int main( int argc, char* argv[] ) 
{
    av_register_all();
    return 0;
}

安慰:

1>------ Build started: Project: ffmpeg, Configuration: Debug Win32 ------
1>ffmpeg.obj : error LNK2019: unresolved external symbol _av_register_all referenced in       function _main
1>C:\Users\okki\documents\visual studio 2010\Projects\ffmpeg\Debug\ffmpeg.exe : fatal    error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

我用的是zeranoe的最新版本 git-56ba331 (2013-05-14)。

我尝试了以下方法来解决这个问题:

  • 将项目配置为同时查找 x64 和 x86 库。
  • 将“共享”包中的 DLL 添加到两个库文件夹中。
  • 将库目录添加到链接器选项和 VC++ 目录中。

我已经坚持了一段时间,任何建议都可以提供帮助。如果需要任何额外的信息,我会很乐意提供。

4

1 回答 1

4

从http://ffmpeg.zeranoe.com/builds/win32/shared/http://ffmpeg.zeranoe.com/builds/win32/dev/ (共享和开发)下载最新文件,并将它们分别解压缩到ffmpeg\sharedffmpeg\dev

创建一个新的控制台项目,将“Additional Include Directory”的值设置为ffmpeg\dev\include,“Additional Library Directories”为ffmpeg\dev\lib\

添加到您的代码

# pragma comment (lib, "avformat.lib")

(在实际项目中,您至少需要文件avutil.libavcodec.lib

要运行程序,请将*.dll文件从ffmpeg\shared\bin输出文件夹复制

于 2013-05-16T13:25:29.753 回答