Windows で ffmpeg にリンクしようとしていますが、問題が発生しています。ffmpeg ヘッダーを含めると、簡単に修正できない何百ものコンパイル エラーが発生します。
1) timestamp.h は _snprintf の代わりに snprintf を使用します。次のように、マクロとして追加しようとしました。
#ifdef Q_OS_WIN #define snprintf _snprintf #endif #define __STDC_CONSTANT_MACROS namespace ffmpeg { extern "C" { #include <libavutil/imgutils.h> #include <libavutil/samplefmt.h> #include <libavutil/timestamp.h> #include <libavformat/avformat.h> #include <libswscale/swscale.h> } }
しかし、それは役に立ちませんでした。マクロが内部で伝播しないのはなぜですか?
2) PRId64 が定義されていません。timestamp.h を含める前に __STDC_CONSTANT_MACROS を定義しましたが、定義が inttypes.h から取得されません。
コンパイラ出力では、次のようになります。
ffmpeg\include\libavutil/timestamp.h(42) : error C3861: 'snprintf': identifier not found
ffmpeg\include\libavutil/timestamp.h(42) : error C2146: syntax error : missing ')' before
識別子「PRId64」