将ffmpeg / avcodec与Visual Studio 2015链接时未解析的外部符号?

时间:2015-12-02 18:23:10

标签: visual-studio ffmpeg

我正在尝试使用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工具时,它构建正常。

1 个答案:

答案 0 :(得分:0)

您可能正在尝试将C代码与C ++名称修改链接。 尝试:

extern "C"
{
#include <avcodec.h>
#include <avformat.h>
}