Answers:
这是我开始使用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(javaString, 0);
// use your string
env->ReleaseStringUTFChars(javaString, nativeString);
}
nativeString
恒定吗?
const
是有原因的。对您的问题的正确答案是strcpy
从const char*
到char*
。那应该为您提供所需的可变项char*
。
首先感谢Jason Rogers的回答。
在Android && cpp中应该是这样的:
const char *nativeString = env->GetStringUTFChars(javaString, nullptr);
// 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);” 最后。
(*env)->
在使用C而不是C ++ 时才需要。