- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Link
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[JNI/NDK] JNI 동작원리 개념 - 2 본문
이전 글에서는 JNI 를 java 측에서 JNI 를 이용해서 c/c++ 함수를 호출하는 방법을 알아보았다. 이번에는 c/c++ library 측에서 JNI를 이용하여 java 의 함수를 호출하는 방법을 알아보도록 하자.
근본적으로 JNI 를 이용해서 상대의 함수를 이용한다는 개념은 같다. 차이는 jni 가 jvm 에 있는 녀석이라서 java 에서 사용할 때는 크게 신경쓸 것이 c/c++ 쪽에서는 JNI 를 이용하기 위해 JNIEnv* 의 reference 를 넘겨주는 작업이 필요하다.
그럼 이제부터 c/c++ 에서 java 의 함수를 이용하는 방법을 알아보자.
근본적으로 JNI 를 이용해서 상대의 함수를 이용한다는 개념은 같다. 차이는 jni 가 jvm 에 있는 녀석이라서 java 에서 사용할 때는 크게 신경쓸 것이 c/c++ 쪽에서는 JNI 를 이용하기 위해 JNIEnv* 의 reference 를 넘겨주는 작업이 필요하다.
그럼 이제부터 c/c++ 에서 java 의 함수를 이용하는 방법을 알아보자.
C/C++ library -> Java class
java 의 class 를 이용하려면 JVM 이 있어야 한다. 그러므로 c/c++ 에서 java 의 함수를 사용할 때는 먼저 JVM 을 memory 에 올리는 작업이 선행되게 된다.JNI_CreateJavaVM(&vm, (void**)&env, &vm_args)
를 통해서 JVM 을 memroy 로 불러오게 된다. 그러면 이제 env 에는 JNIEnv* 의 reference 가 return 되기 때문에 이제 이 env 를 이용해서 JNI 함수를 사용할 수 있게 된다.
지금부터는 이전의 방법과 같다. class 를 찾고, id 를 찾고, method/field 를 찾고, 원하는 작업을 해주면 된다.
함수의 사용법이나 자세한 설명은 ref.1, 2 을 참조하도록 하자.
Reference
'★─Programing > ☆─JNI | NDK' 카테고리의 다른 글
[JNI/NDK] JNI 동작원리 개념 - 1 (0) | 2016.07.19 |
---|---|
[JNI/NDK] JNI Local Reference Changes in ICS ( ICS 부터 바뀌는 JNI Local Reference ) (0) | 2016.06.03 |
[JNI/NDK] 여러 폴더에 있는 라이브러리 링크하기 (0) | 2016.06.02 |
[JNI/NDK] Android NDK Overview ( 안드로이드 NDK 개요 ) (0) | 2016.05.31 |
[JNI/NDK] 이미 만들어진 so 파일 링크하기 (for 안드로이드) (0) | 2016.05.25 |
Comments