JNI преобразование jstring в char *



Я передал строку URL из Java в код C как jstring тип данных с помощью JNI. И мой метод библиотеки нуждается в char * Как url.



как я могу конвертировать jstring на char * ?



С. П.: Есть ли преимущество использования jcharArray в C? (т. е. проходя char [] вместо строки в собственном методе)

466   2  

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

    Ничего не найдено.