W moim kodzie Java mam tablicę 2D float float[x][4] floatArray
. Tutaj x
może mieć wartość od 1 do 25. Muszę przekazać tę dwuwymiarową tablicę float do metody C++
poprzez JNI
. Moja JNI
metoda jestNajprostszy sposób przekazywania float [] [] do C++ za pośrednictwem JNI
jboolean MyJNIMethod(JNIEnv * env, jobject obj, jobjectArray myArray)
{
//how to convert this myArray to something that can be safely passed to C++ method below
}
Wewnątrz MyJNIMethod
muszę wywołać metodę C++
i przekazać tablicę 2D pływaka pochodzący z Jawy do tej metody
bool MyCplusPlusMethod(float coordinates[][4])
{
}
Mam twardy czas w odpowiednio przekształcając jobject unosić [] [] ze względu na brak rodzimej wiedzy o rozwoju. Czy ktoś może mi powiedzieć najprostszy i najbezpieczniejszy sposób? Dzięki
Można by uprościć to przez przekształcenie (w Javie) tablicy java2d Do Jawna tablica 1-rzędowa 1D i przekazywanie jej do float [] [4]. W C++ tablice 1D i 2D wyglądają tak samo w pamięci. –
Po drugie propozycja przejścia jednowymiarowej tablicy nad JNI. Pamiętaj, że będziesz musiał wtedy przekazać rozmiar. – jackrabbit
Postanowiłem użyć wektora> wewnątrz JNI i C++. Teraz czytam float [] [] w JNI. Zapełnianie wektora > i przekazywanie go do C++ –