用VS2005调用ffmpeg库编写应用程序(使用方法可以参考网上的相关文章),这里提一下三个问题的解决:
第一,解决:Cannot open include file: 'inttypes.h'
更新ffmpeg之后,有时编译应用ffmpeg库的工程会发现提示: Cannot open include file: 'inttypes.h': No such file or directory 的出错信息,可通过如下方法解决:
1、找到include目录中的\libavutil\common.h
2、在“#define AVUTIL_COMMON_H”之后加入如下代码,同时删除“#include <inttypes.h>” 然后保存:
#if defined(WIN32) && !defined(__MINGW32__) && !defined(__CYGWIN__)
# define CONFIG_WIN32
#endif
#if defined(WIN32) && !defined(__MINGW32__) && !defined(__CYGWIN__) && !defined(EMULATE_INTTYPES)
# define EMULATE_INTTYPES
#endif
#ifndef EMULATE_INTTYPES
# include <inttypes.h>
#else
typedef signed char int8_t;
typedef signed short int16_t;
typedef signed int int32_t;
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
# ifdef CONFIG_WIN32
typedef signed __int64 int64_t;
typedef unsigned __int64 uint64_t;
# else /* other OS */
typedef signed long long int64_t;
typedef unsigned long long uint64_t;
# endif /* other OS */
#endif /* EMULATE_INTTYPES */
第二,继'inttypes.h'之后的问题 'stdint.h'怎么解决?
解决方法:经过测试,在VC++2008+SP1下可以将#include <stdint.h>注释掉,不会影响编译和连接。
第三,是在Windows下环境使用ffmpeg库时发现报错
error C3861: 'UINT64_C': identifier not found,怎么回事?
解决方案:
在\libavutil\common.h里加入定义如下:
#ifndef INT64_C
#define INT64_C(c) (c ## LL)
#define UINT64_C(c) (c ## ULL)
#endif