Façon la plus simple de passer float[][] pour C++ via JNI

Dans mon code Java j'ai un 2D float array float[x][4] floatArray. Ici x peut être comprise entre 1 et 25. J'ai passer cette 2D float tableau à une C++ méthode via JNI. Mon JNI méthode est

jboolean MyJNIMethod(JNIEnv * env, jobject obj, jobjectArray myArray)
{
    //how to convert this myArray to something that can be safely passed to C++ method below
}

À l'intérieur de MyJNIMethod je dois appeler un C++ méthode et passer 2D float array prises de Java à cette méthode

bool MyCplusPlusMethod(float coordinates[][4])
    {

    }

Je vais avoir du mal à bien la conversion de jobject pour float[][] en raison du manque de développement natif de connaissances. Quelqu'un peut me dire la plus simple et la plus sûre façon possible? Grâce

Vous pouvez simplifier cette opération par conversion (en Java) de la 2D Java tableau à une Java ligne-major 1D tableau, et en passant que dans le float[][4]. En C++, les 1D et 2D tableaux de regarder la même chose dans la mémoire.
La deuxième suggestion pour passer un tableau à une dimension au cours de la JNI. N'oubliez pas que vous aurez également besoin de passer la taille puis.
J'ai décidé d'utiliser vector <vector <float > > à l'intérieur JNI et C++. Maintenant, je suis de lecture float[][] dans la JNI. Le remplissage de vector <vector <float> >, et en le passant à C++
Grande - bon choix. Vous pouvez toujours utiliser mon exemple 😉

OriginalL'auteur Haris Hasan | 2011-07-19