我有一个使用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")
非常感谢!
奥弗
答案 0 :(得分:0)
根据这篇文章,该解决方案被证明是一个简单的链接器选项/ OPT:NOREF:
The procedure entry point could not be located in the dynamic link library - looking in wrong DLL