This question already has answers here:
ffmpeg missing config.h in libavutil (No Such File or Directory) CodeBlocks
                                
                                    (2个答案)
                                
                        
                                2年前关闭。
            
                    
已翻译。

我有个问题。当我尝试编译使用gcc连接h个文件ffmpeg的文件时,出现一个错误,即在代码ffmpeg中未正确写入include,这意味着该文件位于当前目录中,尽管该文件应位于下一个目录中。目录。如何解决?

包括在我的C文件中:

#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"


错误:

D:\gcc\bin>gcc -o a a.c -lavutil -lavformat -lavcodec -lz -
lavutil -lm
In file included from a.c:3:0: libavcodec/avcodec.h:31:33:
fatal error: libavutil/samplefmt.h: No such file or directory
#include "libavutil/samplefmt.h"
^
compilation terminated.


我的答案:

我只能通过修复源代码来解决问题。首先,我添加了libavutil / avconfig.h文件,其中包含以下内容:

  #ifndef AVUTIL_AVCONFIG_H
  #define AVUTIL_AVCONFIG_H
  #define AV_HAVE_BIGENDIAN 0
  #define AV_HAVE_FAST_UNALIGNED 0
  #endif


然后,如果在目录和文件(libavutil / avutil)参与的地方出现错误,则在其中添加“ ../”,因为在这种情况下,目录位于导致错误的文件所在的目录旁边(../libavutil/avutil.h)。在另一种情况下,如果该文件应位于内部(仅当目录名称与当前文件匹配(libavutil / avutil.h)时),您可以保留文件名(avutil.h),也可以添加“ ../ ”,区别不会是。这种操作需要重复大约20次,直到所有头文件中的错误消失为止。之后,无需特殊知识和补丁即可安全地编译ffmpeg。在中文站点上找到avconfig.h的代码。

最佳答案

您的“编译”语句缺少头文件的位置。建议:

编译/链接语句应类似于:

gcc -o a a.c -I./libavutil   -lavutil -lavformat -lavcodec -lz -lavutil -lm


警告:我写了-I参数,好像当前/工作目录包含libavutil作为子目录一样。如果这不正确,则需要对该参数进行调整。

10-06 05:22