0

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」

4

2 に答える 2

4

あなたはそれらをextern "C"権利に含めましたか?

extern "C" {
#include <libavutil/imgutils.h>
#include <libavcodec/avcodec.h>
#include <libswscale/swscale.h>
}
于 2013-05-29T23:01:51.267 に答える