JNI中基本类型数组的传递方法

2020-06-19  本文已影响0人  Nothing_655f

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的参数传递

上一篇 下一篇

猜你喜欢

热点阅读