Я сделал простую функцию для преобразования:
ел большое количество документации о том, как генерировать двумерный примитивный массив в JNI и возвращать его в Java. Но эти фрагменты информации не описывают, как передатьуже существует 2D массив с плавающей точкой (float **) с учетом контекста вC.
Чтобы описать мою проблему явно, я добавлю некоторыеC псевдокод того, что я хотел бы реализовать:
// Returns a 2D float array from C to Java
jfloatArray ndk_test_getMy2DArray(JNIEnv* env, jobject thiz, jlong context)
{
// Cast my context reference
MyContextRef contextRef = (MyContextRef) context;
// In case we need it below
unsigned int length = MyContextGet1DLength(contextRef);
// Get the 2D Array we want to "Cast"
float** primitive2DArray = MyContextGet2DArray(contextRef);
// Hokus pokus...
// We do something to create the returnable data to Java
//
// Below is the missing piece that would convert the primitive
// 2D array into something that can be returned consumed and consumed
// by Java
jfloatArray myReturnable2DArray
return myReturnable2DArray;
}
Я предполагаю, что это не так просто, учитывая, что я не смог найти ничего, описывающего этот сценарий.
Спасибо за любую полезную информацию.