これが私が使用しているコードです:Test.java:
public class HelloWorld {
static {
System.loadLibrary("SumLib");
}
public static void main(String args[])
{
Random rand = new Random();
double[] arr = new double[10];
for(int i = 0; i < 11; i++) {
arr[i] = rand.nextDouble();
}
NativeMethods.sumOfArr(arr);
}
}
NativeMethods.java:
public static native double sumOfArr(double[] arr);
NativeMethods.c:
JNIEXPORT jdouble JNICALL Java_NativeMethods_sumOfArr(JNIEnv *env, jclass cls, jdoubleArray arr) {
return sumOfArr(double *arr);
}
NativeMethods.hは、cygwinの「javahNativeMethods」によって生成されます。
sum.c:
double sumOfArr(double* arr) {
int i;
double sum = 0;
for(i = 0; i < 10; i++) {
sum =+ arr[i];
}
return sum;
}
sum.h:
double sumOfArr(double *arr);
cygwinでSumLib.dllをコンパイル/作成しようとすると、問題が発生し、次のエラーが発生します。
$ gcc -Wl,-add-stdcall-alias -mno-cygwin -shared -I"/cygdrive/c/jdk1.7.0_09/include" -I"/cygdrive/c/jdk1.7.0_09/include/win32" -o SumLib.dll sum.c NativeMethods.c
NativeMethods.c: In function `Java_NativeMethods_sumOfArr':
NativeMethods.c:19: error: parse error before "double"
私はここで数時間この仕事をしようとして立ち往生しています...何が間違っている可能性がありますか?