jstring
JNI를 사용 하여 Java에서 C 코드로 URL 문자열을 데이터 유형으로 전달했습니다. 그리고 내 라이브러리 방법 char *
에는 URL이 필요합니다 .
어떻게 변환 할 수 jstring
있는 char *
?
추신 : C에서 jcharArray를 사용하면 어떤 이점이 있습니까? (즉 char []
, 네이티브 메서드에서 문자열 대신 전달 )
답변
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);
}
답변
먼저 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);”추가 끝에.