如何在NDK中将“int array”从native方法返回到java

时间:2012-04-23 09:46:08

标签: java android c android-ndk

看我在nativeLib中有本机功能

 public native int [] getArrayNative();

我正在使用这个

 private static int[] DEMO_NODES;

 DEMO_NODES =  nativeLib.getArrayNative();

在c代码中

JNIEXPORT jintArray JNICALL Java_com_testing_NativeLib_getArrayNative
  (JNIEnv *env, jobject obj) {

    int array[] = { 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 1, 2, 1, 2, 3, 2, 3, 1, 2 };
    jintArray temp = (*env)->NewIntArray(env,20);
    temp[0] = array[0];   // gives error
    return temp;    
}

这里我想要返回整个arry [],但我无法理解如何做到这一点。 在这里我采取了新的数组临时试图复制arry []的值,但它显示错误。那怎么办呢

1 个答案:

答案 0 :(得分:4)

使用SetIntArrayRegion来填充数组,jintArray只是一些魔力 内部结构,你无法使用索引访问。

  

原型 void SetArrayRegion(JNIEnv * env,数组,   jsize start,jsize len,* buf);