반응형
uint8_t crypto[] = { 0x00, 0x00, 0x00 };
JNIEXPORT jbyteArray JNICALL Java_com_example_ndk_Config_crypto (JNIEnv *env, jobject obj){
jbyteArray ret = (*env)->NewByteArray(env, 8);
(*env)->SetByteArrayRegion(env, ret, 0, 8, crypto);
return ret;
}
오래된 jni 를 실행하려고 하는데 다음과 같은 오류 메세지가 나왔습니다.
jni 는 warning 메세지라고 하더라도 so 파일은 생성이 됩니다.
하지만 저런 메세지를 무시하면 빌드된 so 파일이 정상적으로 동작하지 않을수 있기 때문에
수정해주고 넘어가야 합니다.
위의 문제는 uint8_t 양식의 crypto 란 배열의 데이터를
SetByteArrayRegion 에 그대로 전달했기 때문에 발생한 오류입니다.
uint8_t crypto[] = { 0x00, 0x00, 0x00 };
JNIEXPORT jbyteArray JNICALL Java_com_example_ndk_Config_crypto (JNIEnv *env, jobject obj){
jbyteArray ret = (*env)->NewByteArray(env, 8);
(*env)->SetByteArrayRegion(env, ret, 0, 8, (jbyte *)crypto);
return ret;
}
다음과 같이 uint8_t 로 된 배열을 jbyte* 으로 cast 해주면 문제가 해결됩니다.
참고하세요.
반응형
'Android' 카테고리의 다른 글
[Android/NDK] 기존 프로젝트에 .so 파일 연결하는 법 (1) | 2019.12.27 |
---|---|
[Android/NDK] 기존 프로젝트에 NDK 설정하는 방법 (11) | 2019.12.20 |
[Android/NDK] warning: implicit declaration of function 'time' is invalid in C99 (0) | 2019.12.18 |
[Android/NDK] warning: implicitly declaring library function 'strlen' (0) | 2019.12.18 |
[Android/Error] More than one file was found with OS independent path (1) | 2019.12.16 |