问题:使用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;
}
- undefined reference 接口 链接 项目undefined reference接口 链接 reference undefined角度 链接 undefined_reference_to_xxx preloader undefined reference ubuntu undefined reference mkcramfs cramfs undefined reference int add imp_wsacleanup wsacleanup undefined reference undefined reference cmake xxx undefined reference winmain 39 undefined_reference_to_xxx undefined reference