JNI之把數組從C返回到Java

1,接口

// 數組接收
public native int[] getArray(int len);

2,頭文件

JNIEXPORT jintArray JNICALL Java_com_XXX_XXX_XXX_getArray(JNIEnv *, jobject,jint);

3,C++文件

// 接收數組
extern "C"
JNIEXPORT jintArray JNICALL
Java_com_sXXX_XXX_XXX_getArray(JNIEnv * env, jobject jobj,jint len){
    // 創建一個指定大小的數組
    jintArray  jint_arr = env->NewIntArray(len);
    int * elems = env->GetIntArrayElements(jint_arr,NULL);
    int i = 0;
    for (; i < len; ++i) {
        elems[i] = i;
    }
    // 同步
    env->ReleaseIntArrayElements(jint_arr,elems,JNI_COMMIT);
    return jint_arr;
}

4,調用

int [] arr = xxx.getArray(10);
for (int i = 0; i < arr.length; i++) {
    Log.e("LOG",i+":" +arr[i]);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章