J'ai un magasin d'objets en Java. Mon programme C stocke des données (sous forme de tableau char) dans Java. Maintenant, je souhaite récupérer les données de mon magasin. Je ne trouve aucun appel de fonction qui me renvoie un tableau char. Comment puis-je faire ceci?Retour tableau tableau de java à C - JNI
1
A
Répondre
1
Vous devez utiliser l'une des API fournies par JNI, probablement GetCharArrayElements(). Voici un exemple tiré du code de travail qui récupère un tableau d'octets de Java en C (le code est une fonction invoquée par Java, mais les mécanismes sont identiques).
JNIEXPORT void JNICALL Java_xxx_jniEnqueue(JNIEnv *jep,jobject thsObj,
jlong handle, jbyteArray jvaKey, jint jvaKeyOfs, jint jvaKeyLen, jbyteArray jvaData, jint jvaDtaOfs, jint jvaDtaLen) {
jbyte *jniKey,*jniData;
jthrowable escObj;
jniKey=(*jep)->GetByteArrayElements(jep,jvaKey,0);
jniData=(*jep)->GetByteArrayElements(jep,jvaData,0);
...
memcpy(odp->enqpfx->Msg,jniKey+jvaKeyOfs,(vuns)jvaKeyLen); /* key badly named Msg */
...
// enqueue data using key
if(/* enqueue failed */) {
(*jep)->ReleaseByteArrayElements(jep,jvaKey ,jniKey ,JNI_ABORT); /* abort to not copy back */
(*jep)->ReleaseByteArrayElements(jep,jvaData,jniData,JNI_ABORT); /* abort to not copy back */
throwEscapeObject(jep,escObj);
return;
}
(*jep)->ReleaseByteArrayElements(jep,jvaKey ,jniKey ,JNI_ABORT); /* abort to not copy back */
(*jep)->ReleaseByteArrayElements(jep,jvaData,jniData,JNI_ABORT); /* abort to not copy back */
}
Questions connexes
- 1. Comment retourner un tableau de JNI à Java?
- 2. Retour d'un tableau de JS à C# avec COM-Interop
- 3. Retour d'un tableau d'octets d'activex à javascript
- 4. Problèmes de tableau Java
- 5. Retour nom du tableau PHP
- 6. Retour d'un tableau dans Specman
- 7. Retour d'un tableau C++ (pointeur) de boost python
- 8. C++ Retour et insertion d'un objet de tableau 2D
- 9. Convertir tableau POST Retour à POST des données de chaîne
- 10. Retour du tableau à partir de la méthode
- 11. L'ajout de valeurs à un tableau C#
- 12. Tableau Java: accès direct au composant dans le tableau
- 13. Renvoyer un tableau C vers Java en utilisant JNA
- 14. Java bean avec JNI?
- 15. Sérialisation Java d'un tableau multidimensionnel
- 16. 2d erreur de tableau C++
- 17. contenu Parse de tableau C++
- 18. Instances d'objets JNI et C++
- 19. Tableau à l'intérieur d'un tableau PHP SQL
- 20. tableau C adresse confusion
- 21. Tableau UI C#
- 22. setter objectif-c 2d-tableau
- 23. Retour d'un tableau de structure C/C++ au format XML/XSD
- 24. Lecture à partir d'un tableau en C#
- 25. C# équivaut à un tableau associatif php?
- 26. Problème de correspondance chaîne Java contre tableau
- 27. Tableau de hachage tableau 5D
- 28. Analyser java main args [] erreurs de tableau
- 29. Comment convertir un tableau ruby en tableau C avec RubyInline?
- 30. python - match sur la valeur de retour du tableau
Votre question doit encore être nettoyée un peu. Comment votre programme C stocke-t-il quelque chose en Java? Avez-vous résolu tous les problèmes d'encodage de caractères? –