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); 

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


크리에이티브 커먼즈 라이선스Linsoo의 저작물인 이 저작물은(는)크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

댓글 남기기

이메일은 공개되지 않습니다.

This site uses Akismet to reduce spam. Learn how your comment data is processed.