Comment retourner un tableau à partir de la JNI à Java?
Je suis en essayant d'utiliser le android NDK.
Est-il un moyen de retourner un tableau (dans mon cas un int[]
) créé en JNI à Java? Si oui, veuillez fournir un exemple rapide de la JNI fonction qui ferait cela.
-Grâce
Vous devez vous connecter pour publier un commentaire.
Si vous avez examiné la documentation et d'autres questions qui devraient faire partie de votre question initiale. Dans ce cas, la JNI fonction dans l'exemple crée un certain nombre de tableaux. L'extérieur de la matrice est constituée d'un "Objet" de création de matrice avec la JNI fonction
NewObjectArray()
. Du point de vue de la JNI, c'est tout un tableau à deux dimensions est un tableau d'objets contenant un certain nombre d'autres intérieur des tableaux.Les suivants pour la boucle crée à l'intérieur des tableaux qui sont de type int[] à l'aide de la JNI fonction
NewIntArray()
. Si vous voulais juste retourner une seule dimension tableau d'entiers, alors laNewIntArray()
fonction de ce que vous pouvez utiliser pour créer la valeur de retour. Si vous souhaitez créer un seul dimensions, tableau de Chaînes de caractères, alors vous devez utiliser lesNewObjectArray()
fonction, mais avec un paramètre différent pour la classe.Puisque vous voulez retourner un int tableau, puis votre code va ressembler à quelque chose comme ceci:
si quelqu'un voudrais savoir comment faire pour retourner String[] tableau:
code java
natif d'exportation
code natif
à partir du lien:
http://www.coderanch.com/t/326467/java/java/Returning-String-array-program-Java
Basé sur la question suivante, c'est déjà expliqué dans la première réponse que comment pouvons-nous transmettre int[] via jobjectArray. Mais Voici un exemple de la manière dont nous pouvons retourner une jobjectArray qui contient des listes de données. Cela peut être utile pour les situations par exemple: quand quelqu'un a besoin de renvoyer des données en format 2D pour dessiner une ligne avec x et y des points. L'exemple ci-dessous montre comment un jobjectArray peut renvoyer des données dans le formulaire de format suivant:
Java entrée de la JNI:
Tableau[
Arraylist
de x float points][Arraylist
d'y flotter points]JNI sortie de java:
jobjectArray
[Arraylist
de x float points] [Arraylist
d'y flotter points]La solution la plus Simple est que d'écrire le tableau de données dans un fichier en C,et ensuite ouvrir le fichier à partir de Java