无法将应用程序与libavcodec链接

问题描述 投票:0回答:1

我正在尝试使用ffmpeg库制作一个最简单的应用。这是我的代码:

main.c:

#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>

int main()
{

    avformat_network_init();
    return 0;
}

编译器命令:

gcc -o main main.c -Wall  -lavformat -lavcodec -lswresample -lswscale -lavutil -lm -lz -lpthread -L/usr/local/lib/

导致:

/ usr / local / lib // libavformat.a(matroskaenc.o):在函数中get_aac_sample_rates': /home/ievdokimov/repos/FFmpeg/libavformat/matroskaenc.c:709: undefined reference toavpriv_mpeg4audio_get_config2'/home/ievdokimov/repos/FFmpeg/libavformat/matroskaenc.c:709:未定义参考avpriv_mpeg4audio_get_config2' /usr/local/lib//libavformat.a(mux.o): In function ff_interleave_add_packet':/home/ievdokimov/repos/FFmpeg/libavformat/mux.c:936:未定义参考av_packet_make_refcounted' /usr/local/lib//libavformat.a(utils.o): In function ff_packet_list_put':/home/ievdokimov/repos/FFmpeg/libavformat/utils.c:461:未定义参考av_packet_make_refcounted' /usr/local/lib//libavformat.a(utils.o): In function parse_packet':/home/ievdokimov/repos/FFmpeg/libavformat/utils.c:1494:未定义参考av_packet_make_refcounted' /usr/local/lib//libavformat.a(utils.o): In function ff_read_packet':/home/ievdokimov/repos/FFmpeg/libavformat/utils.c:876:未定义参考av_packet_make_refcounted' /usr/local/lib//libavformat.a(codec2.o): In function codec2_read_header_common':/home/ievdokimov/repos/FFmpeg/libavformat/codec2.c:74:未定义参考avpriv_codec2_mode_bit_rate' /home/ievdokimov/repos/FFmpeg/libavformat/codec2.c:75: undefined reference to avpriv_codec2_mode_frame_size'/home/ievdokimov/repos/FFmpeg/libavformat/codec2.c:76:未定义参考avpriv_codec2_mode_block_align' /home/ievdokimov/repos/FFmpeg/libavformat/codec2.c:74: undefined reference to avpriv_codec2_mode_bit_rate'/home/ievdokimov/repos/FFmpeg/libavformat/codec2.c:75:未定义参考avpriv_codec2_mode_frame_size' /home/ievdokimov/repos/FFmpeg/libavformat/codec2.c:76: undefined reference to avpriv_codec2_mode_block_align'/usr/local/lib//libavformat.a(isom.o):在函数中ff_mp4_read_dec_config_descr': /home/ievdokimov/repos/FFmpeg/libavformat/isom.c:552: undefined reference toavpriv_mpeg4audio_get_config2'/usr/local/lib//libavformat.a(latmenc.o):在函数中latm_decode_extradata': /home/ievdokimov/repos/FFmpeg/libavformat/latmenc.c:65: undefined reference toavpriv_mpeg4audio_get_config2'/home/ievdokimov/repos/FFmpeg/libavformat/latmenc.c:65:未定义参考avpriv_mpeg4audio_get_config2' /usr/local/lib//libavformat.a(matroskadec.o): In function matroska_decode_buffer':/home/ievdokimov/repos/FFmpeg/libavformat/matroskadec.c:1657:未定义对BZ2_bzDecompressInit' /home/ievdokimov/repos/FFmpeg/libavformat/matroskadec.c:1672: undefined reference to BZ2_bzDecompress的引用/home/ievdokimov/repos/FFmpeg/libavformat/matroskadec.c:1665:未定义对BZ2_bzDecompressEnd' /home/ievdokimov/repos/FFmpeg/libavformat/matroskadec.c:1675: undefined reference to BZ2_bzDecompressEnd'的引用/usr/local/lib//libavformat.a(mxfenc.o):在函数中get_ue_golomb_31': /home/ievdokimov/repos/FFmpeg/./libavcodec/golomb.h:140: undefined reference toff_ue_golomb_vlc_code'/usr/local/lib//libavformat.a(mxfenc.o):在函数中mxf_parse_dnxhd_frame': /home/ievdokimov/repos/FFmpeg/libavformat/mxfenc.c:2030: undefined reference toavpriv_dnxhd_get_hr_frame_size'/usr/local/lib//libavformat.a(rtpenc_vc2hq.o):在函数中init_get_bits_xe': /home/ievdokimov/repos/FFmpeg/./libavcodec/get_bits.h:628: undefined reference toff_interleaved_golomb_vlc_len'/usr/local/lib//libavformat.a(rtpenc_vc2hq.o):在函数中get_interleaved_ue_golomb': /home/ievdokimov/repos/FFmpeg/./libavcodec/golomb.h:197: undefined reference toff_interleaved_dirac_golomb_vlc_code'/home/ievdokimov/repos/FFmpeg/./libavcodec/golomb.h:185:未定义参考ff_interleaved_dirac_golomb_vlc_code' /home/ievdokimov/repos/FFmpeg/./libavcodec/golomb.h:197: undefined reference to ff_interleaved_dirac_golomb_vlc_code'/home/ievdokimov/repos/FFmpeg/./libavcodec/golomb.h:197:未定义参考ff_interleaved_dirac_golomb_vlc_code' /home/ievdokimov/repos/FFmpeg/./libavcodec/golomb.h:185: undefined reference to ff_interleaved_dirac_golomb_vlc_code'/usr/local/lib//libavformat.a(rtpenc_vc2hq.o):/home/ievdokimov/repos/FFmpeg/./libavcodec/golomb.h:185:对ff_interleaved_dirac_golomb_vlc_code' follow /usr/local/lib//libavformat.a(rtpenc_vc2hq.o): In function get_interleaved_ue_golomb'的更多未定义引用:/home/ievdokimov/repos/FFmpeg/./libavcodec/golomb.h:183:未定义参考ff_interleaved_ue_golomb_vlc_code' /home/ievdokimov/repos/FFmpeg/./libavcodec/golomb.h:183: undefined reference to ff_interleaved_ue_golomb_vlc_code'/home/ievdokimov/repos/FFmpeg/./libavcodec/golomb.h:183:未定义对ff_interleaved_ue_golomb_vlc_code' /usr/local/lib//libavformat.a(spdifdec.o): In function spdif_get_offset_and_codec'的引用:/home/ievdokimov/repos/FFmpeg/libavformat/spdifdec.c:63:未定义参考av_adts_header_parse' /home/ievdokimov/repos/FFmpeg/libavformat/spdifdec.c:63: undefined reference to av_adts_header_parse'/usr/local/lib//libavformat.a(spdifenc.o):在函数中spdif_header_aac': /home/ievdokimov/repos/FFmpeg/libavformat/spdifenc.c:362: undefined reference toav_adts_header_parse'/usr/local/lib//libavformat.a(ac3dec.o):在函数ac3_eac3_probe': /home/ievdokimov/repos/FFmpeg/libavformat/ac3dec.c:63: undefined reference to av_ac3_parse_header'中/home/ievdokimov/repos/FFmpeg/libavformat/ac3dec.c:60:未定义参考av_ac3_parse_header' /usr/local/lib//libavformat.a(adtsenc.o): In function adts_decode_extradata':/home/ievdokimov/repos/FFmpeg/libavformat/adtsenc.c:56:未定义引用“ avpriv_mpeg4audio_get_config2” collect2:错误:ld返回了1个退出状态

有什么办法解决这个问题?

linux gcc video ffmpeg libavcodec
1个回答
0
投票

似乎libavformat.so文件版本与其他库不同。请检查与liavcodec等其他库兼容的版本

© www.soinside.com 2019 - 2024. All rights reserved.