c int array to java int array using jni

Nar*_*uto 3 java java-native-interface android

我有类似的功能,

int * print(int count)
{
    int * myarray;
    int i=0;
    myarray = (int *)(malloc(sizeof(int))*count);
    for(i=0;i<count;i++)
    {
      myarray[i] = i;
    }   
   return myarray;
}
Run Code Online (Sandbox Code Playgroud)

现在我如何在使用JNI的java中使用myarray

我试过这样的

jintArray Java_com_example_testmyapp_MainActivity_JListPrint(JNIEnv* env, jobject thiz)
{
     return print(5);
}
Run Code Online (Sandbox Code Playgroud)

在java中

int a[] = JListPrint()
Run Code Online (Sandbox Code Playgroud)

但我的应用程序崩溃了

指针,建议好吗?

Spa*_*key 5

我发现这个网站最有用:http://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html

#define ARRAY_LENGTH    5

jintArray Java_com_example_testmyapp_MainActivity_JListPrint(JNIEnv *env, jobject thiz)
{
    jintArray intJavaArray = (*env)->NewIntArray(env, ARRAY_LENGTH);
    int *intCArray = print(ARRAY_LENGTH);

    if ( NULL == intJavaArray ) {

        if ( NULL != intCArray ) {
            free(intCArray);
        }
        return NULL;
    }

    (*env)->SetIntArrayRegion(env, intJavaArray, 0, ARRAY_LENGTH, intCArray);

    return intJavaArray;
}
Run Code Online (Sandbox Code Playgroud)

  • @Naruto你可以用upvote感谢我或接受:) (2认同)