我使用android-ndk-r10d在android studio中用C ++编码。现在我想使用openmp并将代码添加到Android.mk中:
LOCAL_CFLAGS += -fopenmp
LOCAL_LDFLAGS += -fopenmp
并将代码添加到myapp.cpp:
#include <omp.h>
#pragma omp parallel for
for(int i = 1, ii = 0; i < outImage[0]->height; i+=2, ii = i>>1) {
/* Do work... */
}
但gradle构建因错误而导致错误[#pragma omp parallel for] 我该如何处理语法错误?
答案 0 :(得分:0)
可能是编译器不喜欢for()语句的复杂结构。 OpenMP喜欢提前知道步骤数。我也怀疑OpenMP可以处理2个循环变量(i和ii)。尝试使用固定限制的简单循环,如
int kmax = (outImage[0]->height - 1) / 2; // not sure this is right
#pragma omp parallel for
for( int k=0; k<kmax; k++)
{
int i=k*2 + 1; // not sure this is right
int ii = i>>1;
/* Do work ... */
}