He pasado una cadena de URL de Java al código C como jstring
tipo de datos mediante el uso de JNI. Y mi método de biblioteca necesita una char *
url.
¿Cómo puedo convertir jstring
en char *
?
PD: ¿Hay alguna ventaja de usar jcharArray en C? (es decir, pasar en char []
lugar de cadena en el método nativo)
java
java-native-interface
Prasham
fuente
fuente
Respuestas:
Aquí hay un par de enlaces útiles que encontré cuando comencé con JNI
http://en.wikipedia.org/wiki/Java_Native_Interface
http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html
con respecto a su problema, puede utilizar este
fuente
nativeString
constante?const
por una razón. La respuesta correcta a su problema esstrcpy
deconst char*
achar*
. Eso debería proporcionarle el mutablechar*
que desea.Gracias primero la respuesta de Jason Rogers.
En Android && cpp debería ser esto:
Puede corregir estos errores:
1.error: el operando base de '->' tiene un tipo sin puntero 'JNIEnv {también conocido como _JNIEnv}'
2.error: no hay función coincidente para la llamada a '_JNIEnv :: GetStringUTFChars (JNIEnv * &, _jstring * &, bool)'
3.error: no hay función coincidente para la llamada a '_JNIEnv :: ReleaseStringUTFChars (JNIEnv * &, _jstring * &, char const * &)'
4.add "env-> DeleteLocalRef (nativeString);" al final.
fuente
(*env)->
si está usando C, no C ++.