我正在尝试在 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”