如何在Fedora中使用C ++包含avcodec.h

时间:2017-11-29 21:31:27

标签: c++ ffmpeg include

我使用dnf安装了ffmpeg-devel,但是当包含"libavcodec/avcodec.h"时,g ++告诉我

a.cpp:1:10: fatal error: libavcodec/avcodec.h: No such file or directory
 #include "libavcodec/avcodec.h"
          ^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

我的源文件是(a.cpp)

#include "libavcodec/avcodec.h"

int main(int argc, char* argv[])
{
    return 0; 
}

我看到/usr/include/ffmpeg/libavcodec/avcodec.h,所以我将名称更改为ffmpeg/libavcodec/avcodec.h,但后来又说

/usr/include/ffmpeg/libavcodec/avcodec.h:31:10: fatal error: libavutil/samplefmt.h: No such file or directory
 #include "libavutil/samplefmt.h"
          ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

我应该怎样做才能确保所有标头都包含在内?

2 个答案:

答案 0 :(得分:0)

-I中使用g++在包含路径中添加/usr/include/ffmpeg/可解决问题。

最终的计划是

#include "libavcodec/avcodec.h"

int main(int argc, char* argv[])
{
    return 0; 
}

编译它的命令是g++ a.cpp -I /usr/include/ffmpeg

答案 1 :(得分:0)

这个Makefile是我在使用ffmpeg库进行/ v编码的项目中使用的。提取的剪辑如下:

LIBAV_PATH = /path/to/ffmpeg/lib/pkgconfig/

CXXFLAGS += `PKG_CONFIG_PATH=$(LIBAV_PATH) pkg-config --cflags $(PKG_DEPS)`
LDFLAGS  += `PKG_CONFIG_PATH=$(LIBAV_PATH) pkg-config --libs $(PKG_DEPS)`

$(TARGET): $(OBJECTS_C) $(OBJECTS_CPP)
    @echo "LD\t" $@
    $(CXX) -o $@ $^ $(WFLAGS) $(OFLAGS) $(CXXFLAGS) $(LDFLAGS)

%.o: %.cpp
    @echo "CXX\t" $@
    $(CXX) $(WFLAGS) $(OFLAGS) $(CXXFLAGS) -c $< -o $@

顺便说一句,你可以使用这种格式包括:

#include <libavformat/avformat.h>

希望有所帮助。