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 QtApp
versuchen, 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?
Bearbeitet das Fehlerprotokoll in der Frage. war im ersten Entwurf meiner Frage nicht richtig –