.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.