JNI - PASS ARGUMENT. array

来源:互联网 发布:asp300源码 编辑:程序博客网 时间:2024/06/15 03:52

.java file

class IntArray{private native int sumArray(int arr[]);public static void main(String[] args){IntArray p = new IntArray();int arr[] = new int[10];for ( int i=0; i<10;i++)arr[i] = i;int sum = p.sumArray(arr);System.out.println("Sum = "+sum);}static {System.loadLibrary("IntArray");}}

.c file

#include <jni.h>#include <stdio.h>#include "IntArray.h"JNIEXPORT jint JNICALL Java_IntArray_sumArray  (JNIEnv *env, jobject obj, jintArray arr){jint * carr;jint i, sum = 0;carr = (*env)->GetIntArrayElements(env, arr, NULL);if (carr == NULL) return 0;for (i=0;i<10;i++){sum += carr[i];}(*env)->ReleaseIntArrayElements(env,arr,carr,0);return sum;}

Method

1. parameter jintArray arr
2. jint * caar = (*env)->GetIntArrayElements( env, arr, NULL);
So jintArray is passed to jint*

How to invoke:
int a[10]
use a as a parameter.

0 0
原创粉丝点击