Android Ffmpeg生成:生成期间出错

Android Ffmpeg生成:生成期间出错,android,ffmpeg,libavcodec,libav,Android,Ffmpeg,Libavcodec,Libav,我正在建造ffmpeg,被困在一个不寻常的地方。在libavutil中,我们有float_dsp.h和float_dsp.c文件。在这些文件中有一个Method声明,它是: void (*butterflies_float)(float *av_restrict v1, float *av_restrict v2, int len); float (*scalarproduct_float)(const float *v1, const float *v2, int len); 在构建和编译这

我正在建造ffmpeg,被困在一个不寻常的地方。在libavutil中,我们有float_dsp.h和float_dsp.c文件。在这些文件中有一个Method声明,它是:

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的任何支持

这可能是由以下原因引起的:

  • 未将GCC设置为C99模式,其中支持
    restrict
    关键字
  • restrict
    被一些#define重新定义
  • 特定体系结构不支持
    restrict
    ,但这不太可能
  • <> LI> GCC设置为C++模式,其中<代码>限制关键字不支持GCC根据
GCC还支持其他表单,如
\uuuuu restrict
\uuuuu restrict\uuuuuu
。 ffmpeg配置脚本将宏
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
-./configure.orig 2014-01-15 18:53:59.000000000+0100
+++/配置2014-03-13 17:50:45.754442028+0100
@@ -3896,7 +3896,7 @@
EOF
_限制=
-对于restrict\uuuu restrict\uuuuu restrict中的restrict\u关键字;做
+对于uuu restrict\uuuu\uuuu restrict中的restrict\u关键字;做
核对