JNI将jstring转换为char *
我已经通过使用JNI作为jstring
数据types从Java到C代码传递一个URLstring。 而我的库方法需要一个char *
作为url。
我怎样才能转换char *
jstring
?
PS:在C中使用jcharArray有什么好处吗? (即在本地方法中传递char []
而不是string)
这里有几个有用的链接,我开始使用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); }
谢谢Jason Rogers的回答。
在Android && cpp应该是这样的:
const char *nativeString = env->GetStringUTFChars(javaString, JNI_FALSE); // use your string env->ReleaseStringUTFChars(javaString, nativeString);
可以修复这个错误:
1.error:' – >'的基本操作数有非指针types'JNIEnv {aka _JNIEnv}'
2.error:没有匹配函数调用'_JNIEnv :: GetStringUTFChars(JNIEnv *&,_jstring *&,bool)'
3.error:没有匹配函数调用'_JNIEnv :: ReleaseStringUTFChars(JNIEnv *&,_jstring *&,char const *&)'
4.add“env-> DeleteLocalRef(nativeString);” 最后。