我希望使用GetIntArrayElements
获取一个jint
数组的内容并打印出来。
我的代码如下。
JNI代码(C语言):
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, "JNI", __VA_ARGS__)
int size = 5;
jint test_arr[size] = {1, 2, 3, 4, 5}; /* Array to be printed */
jintArray result_arr = (*env)->NewIntArray(env, size);
(*env)->SetIntArrayRegion(env, result_arr, 0, size, test_arr);
/* Print the Value of the Array */
jint *ptr = (*env)->GetIntArrayElements(env, result_arr, NULL);
for (i = 0; i < size; i++)
LOGI("[%d]", *(ptr + i));
(*env)->ReleaseIntArrayElements(env, result_arr, ptr, NULL);
输出:
I/[JNI] ( 1835): [0]
I/[JNI] ( 1835): [1092010456]
I/[JNI] ( 1835): [1092201680]
I/[JNI] ( 1835): [1526497088]
I/[JNI] ( 1835): [0]
预期输出:
I/[JNI] ( 1835): [1]
I/[JNI] ( 1835): [2]
I/[JNI] ( 1835): [3]
I/[JNI] ( 1835): [4]
I/[JNI] ( 1835): [5]
我的最终目标是这个。
我相信从JNI到Java传递数组时出现了问题。
这样打印数组元素是否正确?
我是JNI的新手,需要一些帮助。