G++ 找不到 libavcodec,但 gcc 可以



我在Ubuntu 20.04上尝试编译一些使用libav的代码。以以下脚本为例:

// main.c
#include <libavcodec/avcodec.h>
int main()
{
avcodec_find_encoder((enum AVCodecID) 0);
return 0;
}

如果我用gcc test.c -lavcodec构建它,它构建得很好,但如果我用g++ test.c -lavcodec构建它,我得到:

/usr/bin/ld: /tmp/ccHxMTp1.o: in function `main':
test.c:(.text+0xe): undefined reference to `avcodec_find_encoder(AVCodecID)'
collect2: error: ld returned 1 exit status

我认为您正在遭受C++名称篡改的痛苦。尝试用extern "C" {}对包装#include行。。。

extern "C" {
#include <libavcodec/avcodec.h>
}
int main()
{
avcodec_find_encoder((enum AVCodecID) 0);
return 0;
}

最新更新