J'ai un tableau d'entiers non signés en C et un tableau java de longs. Je veux copier le contenu des entiers non signés dans le tableau java. Jusqu'à présent, la seule fonction que j'ai trouvé pour faire ceci est SetLongArrayRegion(), mais cela prend un tableau de tampons entier. Y at-il une fonction pour définir uniquement les éléments individuels du tableau java?Copie d'une matrice C dans Java Array à l'aide de JNI
Répondre
Il existe également une fonction pour le type «long» primitif de définir des éléments individuels dans JNI. Donc, je crois que ce que vous voulez avoir quelque chose comme ça
unsigned int* cIntegers = getFromSomewhere();
int elements = sizeof(cIntegers)/sizeof(int);
jfieldID jLongArrayId = env->GetFieldID(javaClass, "longArray", "[J");
jlongArray jLongArray = (jlongArray) env->GetObjectField(javaObject, jLongArrayId);
for (unsigned int i = 0; i < elements; ++i) {
unsigned int cInteger = cIntegers[i];
long cLong = doSomehowConvert(cInteger);
env->SetLongArrayElement(jLongArray, i, (jlong) cLong);
}
si long tableau en Java est appelé longArray
et la classe java est enregistré dans une variable JClass JNI javaClass
.
Il existe une fonction SetObjectArrayElement(), qui fonctionne sur les types non natifs. Si vous vouliez vraiment, vraiment utiliser cette approche, je pense que vous pourriez créer un tableau de Longs. Vous pouvez toujours avoir des problèmes avec la conversion de type.
Je pense que votre gros problème ici est que vous essayez de convertir des entiers non-signés en longs Java. Java longs sont signé 64 bits. Une fois la conversion effectuée, vous pouvez créer un tableau de type jlong dans c, puis utiliser la méthode SetLongArrayRegion() pour ramener les nombres à java.
- 1. Copie de fichiers en Java à l'aide de JNI
- 2. JNI Java en C++
- 3. C# - Copie Array en utilisant CopyTo() -Aide
- 4. Copie profonde avec Array
- 5. Retour tableau tableau de java à C - JNI
- 6. structure de données laide à la recherche java
- 7. Java Array Char Array
- 8. JRuby Array to Java Array
- 9. Texte passant C -> Java utilisant JNI
- 10. JNI Flux de données binaires de C++ vers Java
- 11. API Invocation JNI - NoClassDefFoundError (C/Java)
- 12. Java Array concept
- 13. JNI comment accéder à l'objet Java (entier)
- 14. Le passage d'un octet [] en Java à une fonction C à JNI: comment utiliser jarraybyte
- 15. Java bean avec JNI?
- 16. Java JNI - Méthode d'objet appelant
- 17. Création de Java exécutable en utilisant JNI?
- 18. Instances d'objets JNI et C++
- 19. JNI: équivalent de uint * vboIds en Java
- 20. Java HashMap à la matrice
- 21. Création d'une QMainWindow à partir de Java en utilisant JNI
- 22. FFMpeg jni dans Android?
- 23. Sources JNI dans l'APK
- 24. Const C Array Struct dans Struct Array
- 25. Programme Dynamic Array Java converti en C#
- 26. Java Queue, Arrays et JNI
- 27. Classe Cocoa lancée à partir de JNI
- 28. Comment appeler les méthodes Java à partir de C++ dans JNI
- 29. Problème de matrice dans C
- 30. Bibliothèque JNI/C: octet de passe ptr
Désolé de prendre si longtemps pour répondre à cette question. Je n'ai pas réalisé que je n'avais pas cliqué sur la case à cocher. Merci pour l'aide. – LandonSchropp