在我的Android应用程序中,我使用NDK作为应用程序的一部分,这是实现的C代码:
#include <jni.h>
#define DEFAULT_NUM 10
#define LEN 10
int fixedNum
double defaultDoubleArray[LEN];
double fixedDoubleArray[LEN];
void JNICALL Java_com_app_Constant_init (JNIEnv *, jclass, jfloat)
{
setArray(defaultDoubleArray,DEFAULT_NUM);
fixedNum=DEFAULT_NUM*jfloat;
setArray(fixedDoubleArray,fixedNum);
}
jdoubleArray JNICALL Java_com_app_Constant_getArray(JNIEnv *, jclass, jboolean useDefault)
{
jdoubleArray result = (*env)->NewDoubleArray(env, LEN);
(*env)->SetDoubleArrayRegion(env, result, 0, LEN, useDefault?defaultDoubleArray:fixedDoubleArray);
return result;
}
jint JNICALL Java_com_app_Constant_getNum (JNIEnv *, jclass, jboolean useDefault)
{
return useDefault?DEFAULT_NUM:fixedNum;
}
void setArray(conat int* ary,int num){
for(i=0;i<LEN;i++){
ary[i]=...... // fill value
}
}
但是当我使用ndk-build
编译它时它不起作用,似乎不仅存在语法问题而且还存在实现方法。
我不熟悉C或C ++,我希望有人可以告诉我什么是错的?
构建日志:
D:\workspace\application\jni>ndk-build
[armeabi] Compile thumb : Constant <= Constant.c
D:/workspace/application//jni/Constant/Constant.c:7:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'double'
D:/workspace/application//jni/Constant/Constant.c:16:2: error: parameter name omitted
D:/workspace/application//jni/Constant/Constant.c:16:2: error: parameter name omitted
D:/workspace/application//jni/Constant/Constant.c: In function 'Java_com.app.Constant_getArray':
D:/workspace/application//jni/Constant/Constant.c:21:2: error: parameter name omitted
D:/workspace/application//jni/Constant/Constant.c:21:2: error: parameter name omitted
D:/workspace/application//jni/Constant/Constant.c:23:26: error: 'env' undeclared (first use in this function)
D:/workspace/application//jni/Constant/Constant.c:23:26: note: each undeclared identifier is reported only once for each function it appears in
D:/workspace/application//jni/Constant/Constant.c:24:62: error: 'defaultDoubleArray' undeclared (first use in this function)
D:/workspace/application//jni/Constant/Constant.c:24:80: error: 'fixedDoubleArray' undeclared (first use in this function)
D:/workspace/application//jni/Constant/Constant.c: In function 'Java_com.app.Constant_getTileSize':
D:/workspace/application//jni/Constant/Constant.c:28:2: error: parameter name omitted
D:/workspace/application//jni/Constant/Constant.c:28:2: error: parameter name omitted
D:/workspace/application//jni/Constant/Constant.c:30:36: error: 'fixedNum' undeclared (first use in this function)
D:/workspace/application//jni/Constant/Constant.c: In function 'setArray':
D:/workspace/application//jni/Constant/Constant.c:35:6: error: 'i' undeclared (first use in this function)
make.exe: *** [D:/workspace/application//obj/local/armeabi/objs/t/Constant/t.o] Error 1