java - c int数组到java int数组使用jni

标签 java android java-native-interface

<分区>

我有一个类似的功能,

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;
}

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

我试过这样

jintArray Java_com_example_testmyapp_MainActivity_JListPrint(JNIEnv* env, jobject thiz)
{
     return print(5);
}

在java中

int a[] = JListPrint()

但是我的应用崩溃了

请指点,建议?

最佳答案

我发现这个网站最有用: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;
}

关于java - c int数组到java int数组使用jni,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16281232/

相关文章:

java - 使用广播在摇晃时启动应用程序

android - Stripe-Android - fork 并用作自己的库

android - 我可以直接从 calllog.calls 提供商处获取照片吗

java - Java 方法在抛出异常时返回给 JNI 调用者的是什么?

java - JNI %1 不是有效的 Win32 应用程序

java - 定期调用Java Web服务方法

java - 使用java向mySQL表中插入数据

java - 当没有给出路径时,在java中将在哪里创建一个新文件?

java - DownloadManager 什么时候比 HttpUrlConnection 更好?

java - 有没有办法通过 JNI 将 Java 数组传递给 C 而无需复制它?