翻译
我有问题。当我尝试编译一个文件,其中使用gcc连接h文件ffmpeg时,我得到一个错误,在代码ffmpeg中写错了包含,这意味着该文件在当前目录中,尽管它应该在下一个目录。如何解决?
包含在我的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的代码。
答案 0 :(得分:0)
你的编译'语句缺少头文件的位置。建议:
compile / link语句应类似于:
gcc -o a a.c -I./libavutil -lavutil -lavformat -lavcodec -lz -lavutil -lm
警告:我写了-I
参数,好像当前/工作目录包含libavutil
作为子目录。如果这不正确,则需要调整该参数。