说明
- 编译环境: mac osx 10.14 + cmake + clang++
- 写了一个简单c++的范例调用ffmpeg函数完成音频采集
出错提示
[build] /usr/local/ffmpeg/include/libavutil/common.h:30:2: error: missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS
[build] #error missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS
[build] ^
[build] 1 error generated.
[build] make[2]: *** [CMakeFiles/ffmpeg_demo.dir/example/main.cc.o] Error 1
[build] make[1]: *** [CMakeFiles/ffmpeg_demo.dir/all] Error 2
解决办法
- clang 提示的很明显: 需 定义宏 __STDC_CONSTANT_MACROS
- 引文ffmpeg库中的函数是C语言,而我是用的c++调用。
- __STDC_CONSTANT_MACROS 一定要放在 include 之前
#define __STDC_CONSTANT_MACROS
extern "C"{
#include "/usr/local/ffmpeg/include/libavutil/log.h"
#include <libavformat/avformat.h>
#include <libavdevice/avdevice.h>
}