java - reservada - jni types
JNI convierte jstring en char* (2)
Pasé una cadena de URL de Java a código C como tipo de datos jstring
mediante el uso de JNI. Y mi método de biblioteca necesita un char *
como url.
¿Cómo puedo convertir jstring
en char *
?
PD: ¿Hay alguna ventaja de usar jcharArray en C? (es decir, Pasando char []
lugar de cadena en el método nativo)
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 usar esto
JNIEXPORT void JNICALL Java_ClassName_MethodName(JNIEnv *env, jobject obj, jstring javaString)
{
const char *nativeString = (*env)->GetStringUTFChars(env, javaString, 0);
// use your string
(*env)->ReleaseStringUTFChars(env, javaString, nativeString);
}
Gracias primero la respuesta de Jason Rogers.
En Android && cpp debería ser esto:
const char *nativeString = env->GetStringUTFChars(javaString, JNI_FALSE);
// use your string
env->ReleaseStringUTFChars(javaString, nativeString);
Puede corregir estos errores:
1.error: el operando base de ''->'' tiene un tipo no puntero ''JNIEnv {aka _JNIEnv}''
2.error: no hay función de coincidencia para la llamada a ''_JNIEnv :: GetStringUTFChars (JNIEnv * &, _jstring * &, bool)''
3.error: sin función de coincidencia para la llamada a ''_JNIEnv :: ReleaseStringUTFChars (JNIEnv * &, _jstring * &, char const * &)''
4.add "env-> DeleteLocalRef (nativeString);" al final.