【发布时间】:2018-09-11 04:06:45
【问题描述】:
已翻译。
我有问题。当我尝试编译一个使用 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的代码在中文网站上找到。
【问题讨论】:
-
那里我什么都不懂。问题是什么?我有 Windows MinGW。
-
帮助!如何用 gcc 编译?