有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java与jnI(dll)之间的C++索引越界异常

我已经为我的一个java应用程序编写了一个dll。dll中的一个方法获取一些浮点值,将它们存储在数组中,最后将数组发送给java应用程序。我的问题是,当我试图将本机方法的结果存储在位于Java层的数组中时,会抛出索引越界异常。以下是代码中的一些部分:

    //note: MyClass is a static class...
    public static void javaMethod() {
        float[] Aux = new float[6];
        Aux = MyClass.NativeMethod(); //error (index out of bounds exception)
        System.arraycopy(MyClass.NativeMethod(), 0, auxArray, 0, 6); //fails as well

    }

JNIEXPORT jfloatArray JNICALL Java_Package_MyClass_NativeMethod
  (JNIEnv * env, jclass cls)
{
    jfloatArray JNIArray = env->NewFloatArray(6);
    if(JNIArray == NULL)
        return NULL;
    for(int i = 0 ; i < 6 ; i++)
    {
        float * temp;
        temp = &gobalArray[i]; //let's say that this is a float array with 6 elements...
        env->SetFloatArrayRegion(JNIArray, i, 6, temp);
    }
    return JNIArray;
}

在执行dll方法的过程中没有问题,但我想我可能忘记了一个重要的命令


共 (0) 个答案