[英]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.