Java JNI函数,它由正常的c int[]

Java JNI函数,它由正常的c int[],java,interface,java-native-interface,native,Java,Interface,Java Native Interface,Native,我一直在寻找解决这个问题的方法,但是我发现没有一个方法能够正确地回答这个问题。我想我很接近了;我想要一个jint*和int*,以及使用(*env)->SetIntArrayRegion(…)函数 // This function will take an array of global integers that already exist in the // c-side of the program, we'll call them 'data_ints[91]' (there are

我一直在寻找解决这个问题的方法,但是我发现没有一个方法能够正确地回答这个问题。我想我很接近了;我想要一个jint*和int*,以及使用(*env)->SetIntArrayRegion(…)函数

//  This function will take an array of global integers that already exist in the
//  c-side of the program, we'll call them 'data_ints[91]' (there are 91 just to clarify.)
/*...*/
int data_ints[] = {1,2,3,4,/*...*/90,91};

JNIEXPORT jintArray JNICALL Java_MarsRoverGUI_getData
(JNIEnv *, jobject, jint)
{
    jintArray out_ints;
    jint *outElements;
    int i;

    out_ints = (*env)->NewIntArray(env, 91);
    outElements = (*env)->GetIntArrayElements(env,out_ints,0);
    for (i = 0; i < 91; i++)
    {
        outElements[i] = data_ints[i];
    }
    (*env)->ReleaseIntArrayElements(env,out_ints,outElements,0);

    // returns data_ints as a jintArray
    return out_ints;
}
//此函数将获取已存在于
//在程序的c端,我们将它们称为“数据输入[91]”(这里有91个只是为了澄清。)
/*...*/
int data_int[]={1,2,3,4,/*…*/90,91};
JNIEXPORT jintArray JNICALL Java_MarsRoverGUI_getData
(JNIEnv*,jobject,jint)
{
金塔雷出击;
金特*外套;
int i;
out_ints=(*env)->NewIntArray(env,91);
outElements=(*env)->getintarrayements(env,out\u ints,0);
对于(i=0;i<91;i++)
{
外部元素[i]=数据输入[i];
}
(*env)->发布内部要素(环境、外部要素、外部要素,0);
//以数组形式返回数据
返回输入;
}
我离这里有多近?我没有一种有效的测试JNI/的方法:请随意提出建议


谢谢大家

如果我能很好地理解你的问题,这应该对你有用。您似乎对
int
/
jint
转换感到不安,但您不必担心,因为
jint
只是
int
的一个typedef

JNIEXPORT jintArray JNICALL Java_MarsRoverGUI_getData
(JNIEnv *, jobject, jint)
{
    jintArray out_ints;

    out_ints = (*env)->NewIntArray(env, 91);
    (*env)->SetIntArrayRegion(env, out_ints, 0, 91, data_ints);

    // returns data_ints as a jintArray
    return out_ints;
}

如果有什么不清楚的地方,或者我误解了你的问题,请告诉我

这看起来是对的,但你必须找到一种有效的测试方法。您可以尝试编译和链接它,并执行测试程序。太棒了。感谢您清理jint/int typedef sitch mbrenon!!