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

You did include them into a extern "C" right?

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

这是一个错字吗?您谈论“snprintf”(“n”,而不是“m”)。

#define smprintf _snprintf

即使那样,timestamp.h 也可能会重新定义它或包含某些功能。

于 2013-05-29T22:27:01.807 回答