J'ai passé une chaîne d'URL du code Java au code C en tant que jstring
type de données via l'utilisation de JNI. Et ma méthode de bibliothèque a besoin d'un char *
as url.
Comment puis - je convertir jstring
en char *
?
PS: Y a-t-il un avantage à utiliser jcharArray en C? (c'est-à-dire passer char []
au lieu d'une chaîne dans la méthode native)
java
java-native-interface
Prasham
la source
la source
Réponses:
Voici quelques liens utiles que j'ai trouvés lorsque j'ai commencé avec JNI
http://en.wikipedia.org/wiki/Java_Native_Interface
http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html
concernant votre problème, vous pouvez utiliser ceci
la source
nativeString
constant?const
pour une raison. La bonne réponse à votre problème consiste à passerstrcpy
duconst char*
dans un fichierchar*
. Cela devrait vous fournir le mutablechar*
que vous voulez.Merci d'abord à la réponse de Jason Rogers.
Dans Android && cpp devrait être ceci:
Peut corriger ces erreurs:
1. erreur: l'opérande de base de '->' a un type sans pointeur 'JNIEnv {aka _JNIEnv}'
2. erreur: pas de fonction correspondante pour l'appel à '_JNIEnv :: GetStringUTFChars (JNIEnv * &, _jstring * &, bool)'
3. erreur: pas de fonction correspondante pour l'appel à '_JNIEnv :: ReleaseStringUTFChars (JNIEnv * &, _jstring * &, char const * &)'
4. ajouter "env-> DeleteLocalRef (nativeString);" à la fin.
la source
(*env)->
si vous utilisez C, pas C ++.