【问题标题】:How to return "int array" from native method to java in NDK如何在 NDK 中将“int array”从本机方法返回到 java
【发布时间】:2012-04-23 09:46:08
【问题描述】:

看到我在 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[] 但我不明白该怎么做。 在这里,我采用了新的数组 temp,试图复制 arry[] 的值,但它显示错误。那么该怎么做呢

【问题讨论】:

    标签: java android c android-ndk


    【解决方案1】:

    使用SetIntArrayRegion 填充数组,jintArray 只是一些魔法 内部结构,您无法使用索引访问任何内容。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      • 2015-10-03
      • 2018-09-13
      • 2013-07-23
      • 2013-12-10
      相关资源
      最近更新 更多