2016-11-14 51 views
0

在Android Studio中,我使用NDK连接C++ native函数中的两个int数组。我如何在下面的代码中做到这一点?我需要填写下面的代码。提前致谢。JNI如何连接C++ native函数中的两个int数组

jintArray 
Java_com_android_example_MainActivity_helloFromJNI(
    JNIEnv *env, 
    jobject /* this */, 
    jintArray a, jintArray b){ 

    jintArray c; 

    // How to concatenate a and b to get c, c <- a, b? 
    .... 

    return c; 
} 
+1

可以使用['NewIntArray'](http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html)来创建一个新的数组它可以容纳'a'和'b'的所有元素,然后将这些元素复制到新数组中。 – Michael

回答

1
jsize alen = env->GetArrayLength(a); 
jsize blen = env->GetArrayLength(b); 
jintArray c = env->NewIntArray(alen + blen); 
jint *avalues = env->GetIntArrayElements(a, NULL); 
env->SetIntArrayRegion(c, 0, alen, avalues); 
env->ReleaseIntArrayElements(a, avalues, JNI_ABORT); 
jint *bvalues = env->GetIntArrayElements(b, NULL); 
env->SetIntArrayRegion(c, alen, blen, bvalues); 
env->ReleaseIntArrayElements(b, bvalues, JNI_ABORT); 
return c; 
+0

谢谢,它工作完美。我错了jintArray c = env-> NewIntArray(alen + blen); – gnoejh