2016-11-14 90 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