我正在尝试使用Visual Studio 2015构建ffmpeg / avcodec库,它会给我以下链接错误:
allcodecs.obj : error LNK2001: unresolved external symbol ff_h263_vaapi_hwaccel
allcodecs.obj : error LNK2001: unresolved external symbol ff_h263_vdpau_hwaccel
allcodecs.obj : error LNK2001: unresolved external symbol ff_h263_videotoolbox_hwaccel
...
问题来自此宏https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/allcodecs.c#L34
#include "config.h"
#include "avcodec.h"
#include "version.h"
...
#define REGISTER_HWACCEL(X, x) \
{ \
extern AVHWAccel ff_##x##_hwaccel; \
if (CONFIG_##X##_HWACCEL) \
av_register_hwaccel(&ff_##x##_hwaccel); \
}
...
void avcodec_register_all(void)
{
static int initialized;
if (initialized)
return;
initialized = 1;
/* hardware accelerators */
REGISTER_HWACCEL(H263_VAAPI, h263_vaapi);
REGISTER_HWACCEL(H263_VIDEOTOOLBOX, h263_videotoolbox);
...
我不明白为什么当我的配置将它们设置为0
时,这些方法甚至会被声明#define CONFIG_H263_VAAPI_HWACCEL 0
#define CONFIG_H263_VDPAU_HWACCEL 0
#define CONFIG_H263_VIDEOTOOLBOX_HWACCEL 0
...
当我使用msys / make工具时,它构建正常。
答案 0 :(得分:0)
您可能正在尝试将C代码与C ++名称修改链接。 尝试:
extern "C"
{
#include <avcodec.h>
#include <avformat.h>
}