2017-11-29 19 views
0

ich ffmpeg-devel mit DNF installiert haben, aber wenn "libavcodec/avcodec.h" einschließlich, g ++ sagt mirWie avcodec.h in C++ in Fedora enthalten

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

Meine Quelldatei (a.cpp)

#include "libavcodec/avcodec.h" 

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

ich sehe /usr/include/ffmpeg/libavcodec/avcodec.h, so änderte ich den Namen ffmpeg/libavcodec/avcodec.h, aber dann heißt es

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

Was muss ich tun, um sicherzustellen, dass alle Header korrekt enthalten sind?

Antwort

0

Verwenden Sie -I in g++ hinzufügen /usr/include/ffmpeg/ im Include-Pfad löst das Problem.

Das endgültige Programm ist

#include "libavcodec/avcodec.h" 

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

Der Befehl ist es zu kompilieren g++ a.cpp -I /usr/include/ffmpeg

+2

Auch in cpp-Dateien müssen Sie die ffmpeg-Includes in 'extern" C "{}' einkapseln – WLGfx

0

Diese Makefile ist das, was ich in einem Projekt verwenden, das eine/v Codierung mit ffmpeg-Bibliotheken macht. Heraus snipped ist unten:

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" [email protected] 
    $(CXX) -o [email protected] $^ $(WFLAGS) $(OFLAGS) $(CXXFLAGS) $(LDFLAGS) 

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

Btw, können Sie dieses Format verwenden für enthält:

#include <libavformat/avformat.h> 

Hoffnung, das hilft.