마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ndk jni 에서 안드로이드 java class랑 함수를 연결해줄때 궁금한것

0 추천

 

jni c 파일에 보면 

int 함수명(JNIEnv *env, jobject thiz) 이런식으로 기본으로 구현되있는데 이 파라메터들이 의미하는게 뭐죠 ?

또 리턴값은 

return (*env)->NewStringUTF(env, "Hello JNI!");  이런식으로 구현되어 있습니다. 이 리턴값의 의미도 한번 해석해 주시면 감사하겠습니다

 

익명사용자 님이 2014년 8월 28일 질문

1개의 답변

0 추천

* int 함수명(JNIEnv *env, jobject thiz) 의 파라메터 의미

env : 함수 포인터들의 테이블에 대한 포인터라고 합니다.

    한글 설명을 읽어 봐도  무슨말인지... 실제 ..써보면.. 대략 이해가지만.. 설명을 해 드리긴 난감하네요.... ㅠㅠ  ;;

thiz : c의 this 전달자와 유사 합니다. java 에서 jni 를 호출한 클래스를 C쪽에 매핑한 객체라 보시면 될 듯 하네요..

 

그냥 이 두 파라메터는 메소드 선언시 무조건 추가되는  jni 연동 규칙이라 보시는게 속이 편하실겁니다.

 

* 리턴값의 의미

NewStringUTF 로 리턴하는 것은 함수의 반환값이 jstring로 되어 있을 겁니다.

c의 문자열을 java의 String 객체로 변경하여 반환하기 위해 사용합니다.

 

댓글로 자세하게 설명드리긴 난감하니.. 

자세한건 jni 연동 책을 읽어 보시기는걸 권장합니다.

http://www.devpia.com/Maeul/Contents/Detail.aspx?BoardID=1913&MaeulNo=239&no=2735&ref=625

에서 파일을 받아 코어자바 1.2 2권의 11챕터를 공부해보세요..

 

사악미소 (65,330 포인트) 님이 2014년 8월 28일 답변
사악미소님이 2014년 8월 28일 수정
...