1、先看基本函数方法
GetIntArrayElements();//得到的是副本,要拷贝数据
ReleaseIntArrayElements();//对应上面的函数的释放资源的函数
env->GetPrimitiveArrayCritical();//得到的是指向原数据的指针
env->ReleasePrimitiveArrayCritical();////对应上面的函数的释放资源的函数
官方文档:JNI doc
2、JNI .h 文件生成
可以看之前的一篇文档
Java 生成 JNI 头文件
3、用法Demo
extern "C"
JNIEXPORT void JNICALL
Java_com_example_MainActivity_array(JNIEnv *env, jobject instance,jintArray array_)
{
int size = env->GetArrayLength(array_);
int *array = env->GetIntArrayElements(array_, NULL);
for (int i = 0; i <size; ++i) {
printf("array[%d]=%d", i, *(array + i));
}
env->ReleaseIntArrayElements(array_, array, 0);
}
具体更详细的文档可以看这一篇 Jni中C++和Java的参数传递
网友评论