ffmpeg --- C++项目链接库接口时提示找不到定义undefined reference to

发布时间 2023-11-21 15:59:43作者: 林西索

问题:使用CMake组织项目,库和CMakeLists.txt都检查过没有问题,但是在链接时就是提示找不到函数定义。

原因:项目使用的是C++,ffmpeg是C,直接include ffmpeg的头文件,因为C++和C对函数接口的解释不同,所以就找不到接口定义

 

正确用法:

#include "stdio.h"
 
//就是这里
extern "C"
{
#include <libavcodec/avcodec.h>
}

int main(int argc, char **argv)
{
    av_log_set_flags(1);

    AVPacket *pkt = av_packet_alloc();
    void *opt = nullptr;
    const AVCodec *codec = nullptr;
    while (codec = av_codec_iterate(&opt))
    {
        printf("%s\n", codec->name);
    }

    return 0;
}