我正在建造ffmpeg并陷入一个不寻常的地方。在libavutil里面我们有float_dsp.h和float_dsp.c文件。在这些文件中有一个methond声明:
void (*butterflies_float)(float *av_restrict v1, float *av_restrict v2, int len);
float (*scalarproduct_float)(const float *v1, const float *v2, int len);
在构建和编译此文件时,我收到此错误,并且不知道该怎么做。我认为问题在别的地方但又完全不知道了。错误是
jni/ffmpeg/libavcodec/../libavutil/float_dsp.h:150: error: expected ';', ',' or ')' before 'v1'
jni/ffmpeg/libavcodec/../libavutil/float_dsp.h:161: error: expected ';' before 'float'
任何想要帮助的人都请向前迈进一步,因为我几个星期内没有得到任何ffmpeg的支持。
此致
答案 0 :(得分:0)
这可能是由以下原因引起的:
restrict
关键字的C99模式restrict
特定架构不支持restrict
,但这不太可能restrict
关键字GCC http://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html。 GCC还有其他受支持的表单,例如__restrict
和__restrict__
。
ffmpeg configure脚本将宏av_restrict
设置为restrict
,可以在生成的config.h文件中进行检查。
修复可能是更改配置检测代码并删除无效案例restrict
:
--- ./configure.orig 2014-01-15 18:53:59.000000000 +0100
+++ ./configure 2014-03-13 17:50:45.754442028 +0100
@@ -3896,7 +3896,7 @@
EOF
_restrict=
-for restrict_keyword in restrict __restrict__ __restrict; do
+for restrict_keyword in __restrict__ __restrict; do
check_cc <<EOF && _restrict=$restrict_keyword && break
void foo(char * $restrict_keyword p);
EOF