Я пытаюсь передать массив из C ++ в Java.нет ошибок в компиляции.но не удалось запустить (сбой).когда я отлаживаю код, в коде возврата возникает ошибка
я пытаюсь реализовать этот код как вернуть массив c ++ char 2d с помощью JNI в JAVA
вот мой код
JNIEXPORT jobjectArray JNICALL my_function();
// ...
// some code
// ...
// i want convert float point[3][2] to java
jclass intArray1DClass = env->FindClass("[I");
jclass intArray2DClass = env->FindClass("[[I");
// float point[3][2]
jint sizeX = 3;
jint sizeY = 2;
jobjectArray array2D = env->NewObjectArray(
sizeX, intArray2DClass, NULL);
for (jint i = 0; i < sizeX; i++)
{
jobjectArray array1D = env->NewObjectArray(
sizeY, intArray1DClass, NULL);
for (jint y = 0; y < sizeY; y++)
{
jfloatArray value = env->NewFloatArray(point[i][y]); // float point[3][2]
env->SetObjectArrayElement(array1D, y, value);
}
env->SetObjectArrayElement(array1D, i, array1D);
}
return array2D;
и вот как я вызываю функцию из Java.это правильно?
float[][] point = my_function()
спасибо
Обновление
Наконец я использую 1D массив, потому что его просто написать код.и в соответствии с 1D или 2D массивом, что быстрее? , мы должны использовать 1D массив
jint sizeX = 6;
jfloatArray array1D = env->NewFloatArray(sizeX);
env->SetFloatArrayRegion(array1D, 0, sizeX, point);
return array1D;