ffmpeg:无法调用av_register_all

时间:2013-12-19 14:58:48

标签: ffmpeg

我有一个使用ffmpeg解码视频帧的Windows 7应用程序。

它正在使用较旧版本的ffmpeg(不确定究竟是哪一个)但它工作正常,除了从增加线程数调用avcodec_decode_video2时出现一些解码错误。

所以我决定将ffmpeg升级到更新的版本并获得2.1.1(最新版本)。 我把它关了http://ffmpeg.zeranoe.com/builds/

我设法使用新的include / libs编译应用程序。

但是,当我运行应用程序时,它会抛出一个异常,即在dll加载期间找不到函数。 我将其追溯到avformat.lib和avformat-55.dll中的av_register_all()。

看起来ffmpeg库中此函数的定义已在版本上进行了更改。它不再指向avformat-55.dll(我无法使用dumpbin找到它)。

那么从C ++ dll调用此函数的最佳方法是什么?

目前,在我的包含文件中,我有这个:

extern "C" 
{
#include "libavutil\dict.h"
#include "libavcodec\avcodec.h"
#include "libavformat\avformat.h"

};

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

非常感谢!

奥弗

1 个答案:

答案 0 :(得分:0)

根据这篇文章,该解决方案被证明是一个简单的链接器选项/ OPT:NOREF:

The procedure entry point could not be located in the dynamic link library - looking in wrong DLL