JNI 헤더파일 - jni.h

Operating Systems/Android 2010. 8. 30. 21:26 Posted by 알 수 없는 사용자

NDK환경을 구축하고, JAVA의 JNI 기술을 이용하여 안드로이드 앱을 개발하는데 C 혹은 C++을 사용할 수 있다고 하였습니다. 이 전에 포스팅한 글 중에 예제 실습을 한 번 한적이 있었습니다.
(NDK 프로그래밍 예제 : http://viiiin.tistory.com/category/Android%20Dev)
여기에 나온 my_lib.c 코드에서 사용 된 헤더파일이 궁금해서 좀 살펴보았습니다.

my_lib.c에서 사용 된 헤더파일은 ssu_os_android_NativeCall.h 입니다. 이 파일은 또 내부에서 jni.h 파일을 사용하고 있습니다.

jni.h 파일의 내용은 다음과 같습니다.

보시는 것과 같이 3개의 헤더파일을 포함하고 있습니다.

#include <stdio.h>
#include <stdarg.h>
#include "jni_md.h"

첫 번째로 stdio.h 파일은 다들 아시다시피 C의 표준 입출력 관련 함수들을 제공합니다.
두 번째로 stdarg.h 파일은 가변 인자 리스트를 처리하는데 사용됩니다. 주로 execl()함수나 printf()함수에서 사용됩니다.
마지막으로 jni_md.h 파일에는 몇 가지 호출 규약과 변수 타입이 재정의 되어 있습니다.

jni_md.h 파일의 내용은 다음과 같습니다.

JNIEXPORT와 JNIIMPORT는 각각 __declspec(dllexport)와 __declspec(dllimport)로 정의되어 있습니다. 이것으로 C++에서 DLL의 데이터 및 함수, 클래스 또는 클래스 멤버 함수를 이용할 수 있습니다. JNICALL은 윈도우즈 API 함수들의 기본 호출 규약인 __stdcall로 정의되어 있습니다. 그 외에 long은 jint로, __int64는 jlong과 같이 변수 타입도 재정의 되어 있습니다.

'Operating Systems > Android' 카테고리의 다른 글

VMware에 Live Android OS 실행하기  (0) 2010.09.02
NDK를 이용한 안드로이드 App 기본예제  (7) 2010.08.26
NDK 및 JNI 기본 개념  (7) 2010.08.26
AND