JNI преобразование jstring в char *
Я передал строку URL из Java в код C как jstring тип данных с помощью JNI. И мой метод библиотеки нуждается в char * Как url.
как я могу конвертировать jstring на char * ?
С. П.: Есть ли преимущество использования jcharArray в C? (т. е. проходя char [] вместо строки в собственном методе)
2 ответов:
вот несколько полезных ссылок, которые я нашел, когда начал с JNI
http://en.wikipedia.org/wiki/Java_Native_Interface
http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.htmlотносительно вашей проблемы вы можете использовать это
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); }
спасибо ответ Джейсона Роджерса в первую очередь.
In Android &&cpp должно быть:
const char *nativeString = env->GetStringUTFChars(javaString, JNI_FALSE); // use your string env->ReleaseStringUTFChars(javaString, nativeString);можно исправить эту ошибку:
1.ошибка: базовый операнд '- > 'имеет тип без указателя' JNIEnv {aka _JNIEnv}'
2.ошибка: нет соответствующей функции для вызова ' _JNIEnv:: GetStringUTFChars(JNIEnv*&, _jstring*&, bool)'
3.ошибка: нет соответствующей функции для вызова ' _JNIEnv:: ReleaseStringUTFChars(JNIEnv*&, _jstring*&, char const*&)'
4.добавить " env - >DeleteLocalRef (nativeString);" в конце.
Comments