답변:
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*
당신이 원하는 mutable 을 제공 할 것입니다 .
먼저 Jason Rogers의 답변에 감사드립니다.
에서 안드로이드 && 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를 사용하는 경우 에만 필요 합니다.