在program.c中,我想使用libavcodec/avcodec.h中定义的方法“avcodec_register_all()”。
跑步
gcc program.c -L$HOME/ffmpeg/lib/libavfilter.a -L$HOME/ffmpeg/lib/libavcodec.a
给我一个错误
/tmp/ccNeQywU.o: In function `main':
program.c:(.text+0x3f): undefined reference to `avcodec_register_all'
collect2: ld returned 1 exit status
拼写正确并且函数已定义。为什么会出现这种情况?
程序.c
#include <stdio.h>
int main (int args, char *argv[])
{
avcodec_register_all();
}
是这样的
gcc -static -lavfilter -lavcodec -L/HOME/ffmpeg/lib/
您需要包含该文件
avcodec.h
并将该文件的路径添加到 gcc 的包含路径标志中。
gcc -static -lavfilter -lavcodec -L$HOME/ffmpeg/lib/ -I$HOME/ffmpeg/include
给出静态是因为您尝试使用 *.a 库而不是 *.so (动态)。
将
-lavcodec
与 gcc 的现有参数一起使用
原因之一可能是函数
avcodec_register_all()
是在C++文件中定义的。它应该被定义为 extern "C"
中的 avcodec.h
并且库应该用这个正确的 avcodec.h
来编译。