Я передал строку URL-адреса из кода Java в код C в качестве jstring
типа данных с помощью JNI. И моему библиотечному методу нужен char *
URL-адрес as.
Как я могу конвертировать jstring
в char *
?
PS: Есть ли преимущества использования jcharArray в C? (т.е. передача char []
вместо строки в собственном методе)
java
java-native-interface
Прашам
источник
источник
Ответы:
Вот пара полезных ссылок, которые я нашел, когда начал работать с JNI.
http://en.wikipedia.org/wiki/Java_Native_Interface
http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html
относительно вашей проблемы вы можете использовать это
источник
nativeString
постоянство?const
, не зря заявлено . Правильный ответ на вашу проблему - перейтиstrcpy
отconst char*
файла к файлуchar*
. Это должно предоставить вам желаемый изменяемый объектchar*
.Сначала спасибо за ответ Джейсона Роджерса.
В Android && cpp должно быть так:
Можно исправить эту ошибку:
1. ошибка: базовый операнд '->' не имеет типа указателя 'JNIEnv {aka _JNIEnv}'
2. ошибка: нет соответствующей функции для вызова '_JNIEnv :: GetStringUTFChars (JNIEnv * &, _jstring * &, bool)'
3. ошибка: нет соответствующей функции для вызова '_JNIEnv :: ReleaseStringUTFChars (JNIEnv * &, _jstring * &, char const * &)'
4. добавить "env-> DeleteLocalRef (nativeString);" в конце.
источник
(*env)->
если вы используете C, а не C ++.