前言:如何使用JNI创建int数组并且返回给java。
----------分割线---------
JNI创建int数组返回java。
java代码:
public static void main(String[] args) {
TestJni tj = new TestJni();
int[] javaLongArray = tj.javaIntArray(12);
for (int i : javaLongArray) {
System.out.print(i + " ");
}
}
// 利用c创建一个len长度的int数组
public native int[] javaIntArray(int len);
// 加载动态库
static {
System.loadLibrary("JNI");
}
C代码:
#include"com_fly_TestJni.h"
JNIEXPORT jintArray JNICALL Java_com_fly_TestJni_javaIntArray
(JNIEnv *env, jobject job, jint len){
//jintArray(JNICALL *NewIntArray)(JNIEnv *env, jsize len);
//第一个参数
//第二个参数 创建数组的长度
jintArray jntarray = (*env)->NewIntArray(env, len);
//数组转化为 jint* 类型
jint * jintp = (*env)->GetIntArrayElements(env, jntarray, NULL);
for (int i = 0; i < len; i++)
{ //jint 本质long 所以可以赋值
jintp[i] = i * 10;
}
//释放同步
(*env)->ReleaseIntArrayElements(env, jntarray, jintp, 0);
//返回
return jntarray;
}
运行截图:
----------完---------