未解决的外部尝试使用ffmpeg

Asi*_*sik 6 c++ linker ffmpeg

我正在尝试使用ffmpeg中的一些函数,并且遇到了弹性链接器错误.这是我做的:

  • http://ffmpeg.zeranoe.com/builds/下载最新的32位"Dev"版本(即ffmpeg-20130418-git-ee94362-win32-dev)
  • 在Visual Studio 2012 Premium中创建了"常规 - 空"C++项目
  • 将[ffmpeg]/lib文件夹添加到链接器 - >输入 - >"其他库目录"
  • 添加了"swscale.lib; avutil.lib; avformat.lib; avdevice.lib; avcodec.lib;" 链接器 - >输入 - >"附加依赖项"
  • 在C++ - > General - > Additional Include Directories下添加了以下内容:
    • [FFMPEG] /包括
    • [FFMPEG] /包含/ libswscale
    • [FFMPEG] /包含/了libavformat

这是我的main.cpp:

#include "avformat.h"

int main()
{
    av_register_all();
} 
Run Code Online (Sandbox Code Playgroud)

这失败了:

错误LNK2019:函数_main中引用的未解析的外部符号"void __cdecl av_register_all(void)"(?av_register_all @@ YAXXZ)

我该如何解决这个错误?

Rog*_*and 28

当你使用C++时,你需要#includeextern "C"这样的方式包围你的ffmpeg 语句:

extern "C"
{
    #include "avformat.h"
}
Run Code Online (Sandbox Code Playgroud)

  • 呃,我之前实际上已经尝试过它并且它没有用,可能是因为项目中的其他错误.现在它有效......谢谢. (3认同)