2017-10-02 4 views
0

Ich versuche, meine Qt App zu FFmpeg zu verknüpfen. I erstellt FFmpeg aus der Quelle als statische Bibliotheken mit einem Skript von here. Und, x264 von here.libavcodec.a Linker Fehler beim Verknüpfen zu FFmpeg von QtApp

Der Build war in Ordnung. Im Folgenden sind die Configure-Flags I für FFmpeg verwendet:

CONFIGURE_FLAGS="--enable-cross-compile --enable-debug --disable-programs --enable-postproc \ 
       --enable-swscale --enable-avfilter --enable-avresample \ 
       --disable-doc --enable-pic --enable-static --disable-opencl --disable-shared --disable-securetransport \ 
       --enable-videotoolbox --enable-audiotoolbox --enable-gpl" 

Configure-Flaggen für x264:

CONFIGURE_FLAGS="--enable-static --enable-pic --disable-cli --disable-asm" 

folgende ist, wie ich die Bibliotheken Link von meiner QtAppversuchen, es für MacOSX zu bauen:

Ich bin einschließlich FFmpeg Header wie auch empfohlen:

#ifdef __cplusplus 
extern "C" 
{ 
    #include <libavcodec/avcodec.h> 
    #include <libavformat/avformat.h> 
    #include <libswscale/swscale.h> 
    #include <libavutil/frame.h> 
} 
#endif 

#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55,28,1) 
#define av_frame_alloc avcodec_alloc_frame 
#endif 

Ausgabe:
Aber wenn ichav_register_all nennen. Ich bekomme folgende Linkfehler.

Undefined symbols for architecture x86_64: 
"_VDADecoderCreate", referenced from: 
    _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
    _ff_vda_default_init in libavcodec.a(vda_h264.o) 
"_VDADecoderDecode", referenced from: 
    _vda_old_h264_end_frame in libavcodec.a(vda_h264.o) 
    _vda_h264_end_frame in libavcodec.a(vda_h264.o) 
"_VDADecoderDestroy", referenced from: 
    _ff_vda_destroy_decoder in libavcodec.a(vda_h264.o) 
"_VDADecoderFlush", referenced from: 
    _vda_old_h264_end_frame in libavcodec.a(vda_h264.o) 
    _vda_h264_end_frame in libavcodec.a(vda_h264.o) 
"_kVDADecoderConfiguration_Height", referenced from: 
    _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
    _ff_vda_default_init in libavcodec.a(vda_h264.o) 
"_kVDADecoderConfiguration_SourceFormat", referenced from: 
    _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
    _ff_vda_default_init in libavcodec.a(vda_h264.o) 
"_kVDADecoderConfiguration_Width", referenced from: 
    _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
    _ff_vda_default_init in libavcodec.a(vda_h264.o) 
"_kVDADecoderConfiguration_avcCData", referenced from: 
    _ff_vda_create_decoder in libavcodec.a(vda_h264.o) 
    _ff_vda_default_init in libavcodec.a(vda_h264.o) 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Frage:
Was ich hier fehlt?

+0

Bearbeitet das Fehlerprotokoll in der Frage. war im ersten Entwurf meiner Frage nicht richtig –

Antwort

0

Fest es. Im Anschluss wird in der Linker Liste fehlt

LIBS += -framework VideoDecodeAcceleration 

, dass alle Linker Probleme libavcodec.a(vda_h264.o)
Yep Zusammenhang behebt.

Verwandte Themen