java调用C代码,传递数组并且操作,是如何进行的?
java代码:
public class JNI {
/**
* 加载动态链接库
* 也就是c代码编译好的so文件
*/
static {
System.loadLibrary("app");
}
public native int[] changeArrValue(int[] arrs);
}
C代码:
#include "com_example_jnidemo_JNI.h"
/**
*/
JNIEXPORT jintArray JNICALL Java_com_example_jnidemo_JNI_changeArrValue(JNIEnv *env, jobject obj, jintArray jintArrs){
//获取数组长度
int length = (*env)->GetArrayLength(env,jintArrs);
//获取数组首地址
int *addArr = (*env)->GetIntArrayElements(env,jintArrs,0);
//循环改变数组内容
int i;
for ( i= 0; i < length; ++i) {
*(addArr + i) += 1;
}
return jintArrs;
}