[英]gcc: Linking an External Library
在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
拼写正确,功能已定义。 为什么会这样呢?
program.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
给出static是因为您尝试使用* .a库而不是* .so(动态)。
使用-lavcodec
和现有参数来gcc
原因之一可能是函数avcodec_register_all()
在C ++文件中定义。 应该在avcodec.h
其定义为extern "C"
,并且应该使用适当的avcodec.h
编译该库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.