我這樣做了程序。C程序找不到包含在頭文件中的函數
1 #include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #include "libavformat/avformat.h"
5
6 int main (int argc, char* argv[]){
7 av_register_all();
8 return 0;
9 }
我的頭文件位於
[email protected]:/home/juneyoungoh/getDuration# find/-name "avformat.h"
/root/ffmpeg/libavformat/avformat.h
/usr/local/include/libavformat/avformat.h
然後我用gcc getDuration.c
運行,但我的消息顯示如下圖所示。
[email protected]:/home/juneyoungoh/getDuration# gcc getDuration.c
/tmp/ccwjonqH.o: In function `main':
getDuration.c:(.text+0x10): undefined reference to `av_register_all'
collect2: ld returned 1 exit status
坦率地說,我不知道是什麼使這個。
感謝您的回答。
========================== edited#1 ================= ==========
當我「ls/usr/local/lib」,我得到這個。
[email protected]:/home/juneyoungoh/getDuration# ls /usr/local/lib/
libavcodec.a libavutil.a libopus.la libvpx.a python2.7
libavdevice.a libfdk-aac.a libpostproc.a libx264.a
libavfilter.a libfdk-aac.la libswresample.a libyasm.a
libavformat.a libopus.a libswscale.a pkgconfig
您可以在最後一行的第一行看到libavformat.a。
因此,如果我命令你的建議,我會得到下面。
/root/ffmpeg/libavformat/vqf.c:244: undefined reference to `av_free_packet'
/usr/local/lib//libavformat.a(vqf.o): In function `add_metadata':
/root/ffmpeg/libavformat/vqf.c:58: undefined reference to `av_malloc'
/root/ffmpeg/libavformat/vqf.c:64: undefined reference to `av_dict_set'
/usr/local/lib//libavformat.a(vqf.o): In function `vqf_read_header':
/root/ffmpeg/libavformat/vqf.c:148: undefined reference to `av_dict_set'
/root/ffmpeg/libavformat/vqf.c:208: undefined reference to `av_log'
/root/ffmpeg/libavformat/vqf.c:216: undefined reference to `av_malloc'
/root/ffmpeg/libavformat/vqf.c:170: undefined reference to `av_log'
/root/ffmpeg/libavformat/vqf.c:121: undefined reference to `av_log'
/root/ffmpeg/libavformat/vqf.c:184: undefined reference to `av_log'
/root/ffmpeg/libavformat/vqf.c:136: undefined reference to `av_log'
/usr/local/lib//libavformat.a(wavenc.o): In function `wav_write_trailer':
/root/ffmpeg/libavformat/wavenc.c:210: undefined reference to `av_rescale'
/usr/local/lib//libavformat.a(wavenc.o): In function `wav_write_packet':
/root/ffmpeg/libavformat/wavenc.c:181: undefined reference to `av_log'
它太長了,所以我只是發佈一小部分。
我想了libavformat的所有鏈接已被打破,但我不知道
我能做些什麼來解決這個問題的鏈接。
我已經安裝了他們的官方鏈接說。
https://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuideQuantal
我假設系統可以找到頭,因爲如果沒有它吐出消息,「沒有這樣的文件或目錄」,是我錯了嗎? –
頭文件並不是庫。包括頭文件提供了函數聲明,但是你需要爲鏈接器指定一個庫來獲取定義。 –
@WilliamPursell在這種情況下,庫名稱是「avformat」,頭文件是「avformat.h」,對吧? –