Przekazałem ciąg adresu URL z Java do kodu C jako jstring
typ danych za pomocą JNI. A moja metoda biblioteczna wymaga char *
as url.
Jak mogę zamienić jstring
na char *
?
PS: Czy jest jakaś korzyść z używania jcharArray w C? (tj. przekazywanie char []
zamiast ciągu znaków w metodzie natywnej)
java
java-native-interface
Prasham
źródło
źródło
Odpowiedzi:
Oto kilka przydatnych linków, które znalazłem, kiedy zaczynałem z JNI
http://en.wikipedia.org/wiki/Java_Native_Interface
http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html
jeśli chodzi o twój problem, możesz to wykorzystać
źródło
nativeString
stałym?const
z jakiegoś powodu. Poprawną odpowiedzią na twój problem jeststrcpy
przejścieconst char*
z pliku do plikuchar*
. To powinno zapewnić zmiennośćchar*
, której chcesz.Najpierw dziękuję za odpowiedź Jasona Rogersa.
W systemie Android && cpp powinno wyglądać tak:
Może naprawić te błędy:
1. błąd: operand bazowy „->” nie ma typu wskaźnikowego „JNIEnv {aka _JNIEnv}”
2. błąd: brak funkcji dopasowującej dla wywołania '_JNIEnv :: GetStringUTFChars (JNIEnv * &, _jstring * &, bool)'
3. błąd: brak funkcji dopasowującej dla wywołania '_JNIEnv :: ReleaseStringUTFChars (JNIEnv * &, _jstring * &, char const * &)'
4.add "env-> DeleteLocalRef (nativeString);" na końcu.
źródło
(*env)->
wtedy, gdy używasz C, a nie C ++.