在android中使用NDK(C代码)

时间:2014-05-05 08:06:55

标签: android android-ndk java-native-interface

在我的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

0 个答案:

没有答案