尝试使用ffmpeg时出现未解决的外部引用错误

9
我正在尝试使用ffmpeg的一些函数,但遇到了可恢复的链接器错误。这是我所做的:
  • http://ffmpeg.zeranoe.com/builds/下载了最新的32位“Dev”版本(即ffmpeg-20130418-git-ee94362-win32-dev)
  • 在Visual Studio 2012 Premium中创建了一个“通用-空”C++项目
  • 将[ffmpeg]/lib文件夹添加到Linker->输入->“附加库目录”
  • 在Linker->输入->“附加依赖项”中添加“swscale.lib; avutil.lib; avformat.lib; avdevice.lib; avcodec.lib;”
  • 在C++->常规->“其他包含目录”下添加以下内容:
    • [ffmpeg]/include
    • [ffmpeg]/include/libswscale
    • [ffmpeg]/include/libavformat
这是我的main.cpp:
#include "avformat.h"

int main()
{
    av_register_all();
} 

出现以下错误:

错误 LNK2019: 无法解析的外部符号 "void __cdecl av_register_all(void)" (?av_register_all@@YAXXZ),该符号在函数 _main 中被引用

如何修复此错误?


可能是重复的问题,参考链接:http://stackoverflow.com/q/7514249/845568 - Captain Obvlious
1个回答

38

由于您正在使用C ++,因此需要像这样使用 extern "C" 将ffmpeg #include语句包围起来:

extern "C"
{
    #include "avformat.h"
}

3
嗯,我之前实际上尝试过那个方法,但没有成功,可能是项目中的其他错误导致的。现在它可以用了... 谢谢。 - Asik
谢谢!我猜这会导致它寻找未装饰的“C”版本符号,而不是装饰的C++符号? - Deanna
@Deanna 是的,完全正确。我很高兴你觉得这个答案有用。 - Roger Rowland
完美的答案,起作用了。 - RCYR

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