sourcecode

JNI는 jstring을 char*로 변환합니다.

copyscript 2023. 1. 30. 22:15
반응형

JNI는 jstring을 char*로 변환합니다.

URL 문자열을 Java에서 C 코드로 전달했습니다.jstringJNI를 사용하여 데이터 유형을 지정합니다.그리고 내 라이브러리 방법에는char *url로 지정합니다.

변환 방법jstringchar *?

추신: 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);
}

먼저 제이슨 로저스의 답변에 감사드립니다.

Android & cpp에서는 다음과 같습니다.

const char *nativeString = env->GetStringUTFChars(javaString, nullptr);

// use your string

env->ReleaseStringUTFChars(javaString, nativeString);

다음 오류를 수정할 수 있습니다.

1. 오류: '->'의 기본 피연산자에 포인터 유형이 아닌 'JNIEnv {aka _JNIEnv}'가 있습니다.

2. 오류: '_JNIEnv:'에 대한 호출에 일치하는 함수가 없습니다.GetString(스트링)UTFChars (JNIEnv*&, _jstring*&, bool) '

3. 오류: '_JNIEnv:'에 대한 호출에 일치하는 함수가 없습니다.릴리스 문자열UTFChars(JNIEnv*&, _jstring*&, char const*&)

4. 마지막에 "env-> Delete Local Ref(native String)"를 추가합니다.

언급URL : https://stackoverflow.com/questions/4181934/jni-converting-jstring-to-char

반응형