ffmpeg --- C++项目链接库接口时提示找不到定义undefined reference to
问题:使用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;
}