JNI 에서 배열 매개변수로 넘기기

JNI 사용하면서 배열 넘겨서 내부에서 데이터 입력하는게 있는데 javah를 쓰면 알아서 적당한 타입으로 바꿔줌.

예를 들어 int[]를 사용하면 jintArray 로 바꿔줌.
인터넷 검색해보니 거의 대부분이 j변수타입Array 명이더군요.

문제는 이거 그냥 쓸수가 없더군요.
사유는 C 에서 배열은 연속된 메모리 배열이지만 자바에서 배열은유저 입장에선 연속된 배열이지만 실제 메모리상에선 그렇지 않다고 하더군요 그래서 사용하기 전에 해줘야 하는게 있습니다.

jintArray inPixels //매개변수로 들어오는것

jint *pInPixels;
int size;
jboolean isCopy = false;
 
size = env->GetArrayLength(inPixels);
pInPixels = env->GetIntArrayElements(inPixels, &isCopy);

//배열 사용
int aaa = pInPixels[0];
pInPixels[0] = 2;

env->ReleaseIntArrayElements(inPixels, pInPixels, 0); 

뭐 이정도 나머진 융통성을 발휘해서


Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다