Ich habe eine URL-Zeichenfolge von Java an C-Code als jstring
Datentyp mithilfe von JNI übergeben. Und meine Bibliotheksmethode benötigt eine char *
as url.
Wie kann ich konvertieren jstring
in char *
?
PS: Gibt es einen Vorteil bei der Verwendung von jcharArray in C? (dh Übergeben char []
anstelle von Zeichenfolge in der nativen Methode)
java
java-native-interface
Prasham
quelle
quelle
Antworten:
Hier sind einige nützliche Links, die ich gefunden habe, als ich mit JNI angefangen habe
http://en.wikipedia.org/wiki/Java_Native_Interface
http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html
In Bezug auf Ihr Problem können Sie dies verwenden
quelle
nativeString
konstant zu bleiben ?const
aus einem Grund deklariert . Die richtige Antwort auf Ihr Problem iststrcpy
von derconst char*
in einechar*
. Das sollte Ihnen das Veränderliche bieten, daschar*
Sie wollen.Danke zuerst an Jason Rogers 'Antwort.
In Android && cpp sollte dies sein:
Kann diese Fehler beheben:
1. Fehler: Der Basisoperand von '->' hat den Nichtzeigertyp 'JNIEnv {aka _JNIEnv}'.
2. Fehler: Keine übereinstimmende Funktion für den Aufruf von '_JNIEnv :: GetStringUTFChars (JNIEnv * &, _jstring * &, bool)'
3. Fehler: Keine übereinstimmende Funktion für den Aufruf von '_JNIEnv :: ReleaseStringUTFChars (JNIEnv * &, _jstring * &, char const * &)'
4.add "env-> DeleteLocalRef (nativeString);" am Ende.
quelle
(*env)->
wenn Sie C verwenden, nicht C ++.