1,接口,
// 数组传入
public native void giveArray(int[] arr);
2,头文件
JNIEXPORT void JNICALL Java_com_XXX_XXX_XXX_giveArray(JNIEnv *, jobject,jintArray);
3,C++文件
int compare(const void *a , const void *b){
return *(int *)a - *(int *)b; //升序排序
}
// 传入数组
extern "C"
JNIEXPORT void JNICALL
Java_com_XXX_XXX_XXX_giveArray(JNIEnv * env, jobject jobj,jintArray arr){
// jintArray->jin指针 -> c int 数组
jint * elems = env->GetIntArrayElements(arr,NULL);
// 数组的长度
int len = env->GetArrayLength(arr);
// 排序
qsort(elems,len, sizeof(jint),compare);
// 同步
// mode
// 0,Java数组进行更新,并且释放C/C++数组
// JNI_COMMIT Java数组进行更新,不释放C/C++数组(函数执行完,数组还是会释放的)
// JNI_ABORT Java数组不进行更新,但是释放C/C++数组
env->ReleaseIntArrayElements(arr,elems,JNI_COMMIT);
}
4,调用
XXX.giveArray(array);
for (int i = 0; i < array.length; i++) {
Log.e("LOG",i+":" +array[i]);
}