[java] jstring을 char로 변환하는 JNI *

jstringJNI를 사용 하여 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);”추가 끝에.


답변