JNI를 사용하여 문자열 배열을 Java에서 C로 전달
저는 스트링 배열이 있어요.{"myname","yourname","hisname"}
그리고 이 배열을 JNI를 이용해서 C로 보내려고 합니다.이에 대한 명확한 해결책을 찾을 수 없었습니다.나는 이 끈을 a로 받으려고 노력했습니다.chararray
하지만 성공하지는 못합니다.
이것을 할 방법이 방법이 있습니까?
당신은 간단한 함수를 작성할 수 있습니다.jobjectArray
object, 각각의 것을 jstring에 캐스팅한 다음 호출GetStringUTFChars
그 위에
다음과 같은 경우:
void MyJNIFunction(JNIEnv *env, jobject object, jobjectArray stringArray) {
int stringCount = env->GetArrayLength(stringArray);
for (int i=0; i<stringCount; i++) {
jstring string = (jstring) (env->GetObjectArrayElement(stringArray, i));
const char *rawString = env->GetStringUTFChars(string, 0);
// Don't forget to call `ReleaseStringUTFChars` when you're done.
}
}
네, 방법이 있습니다.당신은 통과할 것입니다.String[]
자바 쪽에서 당신의 네이티브 메소드로 그리고 그것은 C/C++ 쪽으로 건너갈 것입니다.jobjectArray
. 그러면 당신은 사용합니다.GetObjectArrayElement()
A를 받다jstring
지정된 지수로 사용한 후GetStringUTFChars()
아니면GetStringChars()
기본 문자열 데이터에 대한 C/C++ 포인터를 가져옵니다.
그리고 그것에 대해 모르신다면, JNI Book은 귀중한 참고 자료가 됩니다.
다음과 같은 방법으로 수행할 수 있습니다.
(JNIEnv *env, jobject object, jobjectArray prdctini)
{
const char *param[20];
jsize stringCount = (*env).GetArrayLength(prdctini);
for (int i=0; i<stringCount; i++) {
jstring string = (jstring) (*env).GetObjectArrayElement( prdctini, i);
param[i] = (*env).GetStringUTFChars( string, NULL);
}
cout<<"U_Id="<<param[0]<<endl;
cout<<"aggregation="<<param[1]<<endl
}
사용하는 것을 기억합니다.
env->GetArrayLength(stringArray);
언급URL : https://stackoverflow.com/questions/5972207/passing-string-array-from-java-to-c-with-jni
'source' 카테고리의 다른 글
Laravel PDO Exception SQLSTATE[HY000] [1049] 알 수 없는 데이터베이스 '위조' (0) | 2023.09.27 |
---|---|
워드프레스에서 내보낸 두 Json 파일을 결합합니다. (0) | 2023.09.27 |
자바스크립트에서 추상 베이스 클래스를 만들려면 어떻게 해야 합니까? (0) | 2023.09.27 |
엔티티 프레임워크가 복합 키(Oracle)를 사용하여 테이블의 데이터를 업데이트할 수 없음 (0) | 2023.09.27 |
jQuery에서 symbol $의 의미는 무엇입니까? (0) | 2023.09.27 |