我用gcc编写ffmpeg。
但是,在构建过程中,我遇到了我在程序中编码的所有函数的“对xxxxx的未定义引用”的错误,我发现它是由libxxx.a文件引起的。
互联网上的每位顾问都建议检查目录中的文件。
因此,我搜索了包含计算机中函数名称的文件,并且发现.a文件在我编码的目录中正确设置。
还有其他文件名为'libxxx.dll.a',所以我尝试用文件'libxxx.dll.a'构建,但我得到了相同的结果。
关于这一点,我有一些问题。
1)如果gcc找不到libxxx.a文件,则会说“找不到-lxxx”。但它只是说'未定义引用xxxx'。这意味着那些libxxx.a文件位于正确的目录中。
2)如果文件没有定义函数,那很奇怪。因为这些文件包含函数名称,并且是我在计算机中搜索的相同文件/目录,我认为它应该具有函数的定义。但我不确定文件是否定义了函数,因为我自己无法读取文件。
如果我错了,我的错误是什么?
3)libxxxlib.a文件可以用libxxx.a替换吗?如果可以,libxxxlib.a和libxxx.a之间有什么区别?对于libz和libzlib来说也一样吗?
这是我的行推荐,包含libxxx.a文件的目录。
g ++ -o C:\ ffmpeg \ ffmpegTest C:\ ffmpeg \ ffmpegTest.cc -IC:\ ffmpeg -LC:\ ffmpeg \ 3rdparty \ lib -lavutil -lavformat -lavcodec -lz -lavutil -lm -D__STDC_CONSTANT_MACROS
C:\ ffmpeg的\的3rdParty \ lib中
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:< .text + 0xec&gt ;:未定义引用' av_register_all()'
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:< .text + 0x11c&gt ;:未定义引用' av_open_input_file(AVFormatContext * ,char const ,AVInputFormat *,int,AVFormatParameters *)'
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:< .text + 0x13b&gt ;:未定义引用' av_find_stream_info(AVFormatContext *)'
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:< .text + 0x174&gt ;:未定义引用" dump_format(AVFormatContext,int,char const *,int)& #39;
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:< .text + 0x224&gt ;:未定义引用' avcodec_find_decoder(CodecID)'
并且所有错误都是
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:< .text + 0x281&gt ;:未定义引用' avcodec_open(AVCodecContext *,AVCodec)'
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:< .text + 0x297&gt ;:未定义引用' avcodec_alloc_frame()'
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:< .text + 0x2a3&gt ;:未定义参考' avcodec_alloc_frame()'
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:&lt; .text + 0x2e6&gt ;:未定义引用&#39; avpicture_get_size(PixelFormat,int,int)&#39; < / p>
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:&lt; .text + 0x2fc&gt ;:未定义引用&#39; av_malloc(unsigned int)&#39;
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:&lt; .text + 0x341&gt ;:未定义引用&#39; avpicture_fill(AVPicture *,unsigned char *,PixelFormat,int, INT)&#39;
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:&lt; .text + 0x38c&gt ;:未定义参考&#39; avcodec_decode_video2(AVCodecContext,AVFrame *,int,AVPacket *)& #39;
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:&lt; .text + 0x409&gt ;:未定义引用&#39; sws_getContext(int,int,PixelFormat,int,int,PixelFormat ,int,SwsFilter *,swsFilter *,double const *)&#39;
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:&lt; .text + 0x463&gt ;:未定义引用&#39; sws_scale(SwsContext *,unsigned char const * const *,int const *,int,int,unsigned char * const *,int const *)&#39;
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:&lt; .text + 0x4bb&gt ;:未定义引用&#39; av_free_packet(AVPacket *)&#39;
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:&lt; .text + 0x4cf&gt ;:未定义引用&#39; av_read_frame(AVFormatContext,AVPacket *)&#39;
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:&lt; .text + 0x36c&gt ;:未定义引用&#39; av_free(void *)&#39;
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:&lt; .text + 0x36c&gt ;:未定义引用&#39; avcodec_close(AVCodecContext *)&#39;
C:\ Users \ AppData \ Local \ Temp \ ccVHLzjK.o:ffmpegTest.cc:&lt; .text + 0x36c&gt ;:未定义引用&#39; av_close_input_file(AVFormatContext)&#39;
答案 0 :(得分:0)