此篇Java调用C/C++函数来实现给int数组[12,45,67]的每个元素加17;
java调用:
int array[] = { 12, 45, 67 };
array = (array);
String resultStr = (array);
java的native方法:
/**
* JNI传递int类型数组作为参数并返回int类型数组返回值
* @param array
* @return
*/
public native int[] intArray(int[] array);
C/C++函数:
/*
* Class: com_niubashaoye_ndk_jni_JNITools
* Method: intArray
* Signature: ([I)[I
*/
JNIEXPORT jintArray JNICALL Java_com_niubashaoye_ndk_jni_JNITools_intArray(
JNIEnv *env, jobject obj, jintArray array) {
//获取参数int数组的元素个数;
jsize size = env->GetArrayLength(array);
//获取int数组的所有元素
jint *intArray = env->GetIntArrayElements(array, JNI_FALSE);
//循环加17
for (int i = 0; i < size; i++) {
intArray[i] += 17;
}
//根据int数组个数来创建一个jintArray
jintArray newIntArray = env->NewIntArray(size);
//把jint指针中的元素设置到jintArray对象中
env->SetIntArrayRegion(newIntArray, 0, size, intArray);
//返回jintArray对象
return newIntArray;
}
案例下载:/download/niuba123456/10531341