본문 바로가기

JAVA

JNI 헤더 만들기

JNI 헤더 만들기



jni를 써야 한다면 적절한 jni용 c/cpp헤더를 만들어야 한다.

문제는 javah 쓰기가 귀찮다는거다.

그냥 직접 코딩하자. 규칙이 간단하기 때문이다.





포멧



함수헤드는 항상 이 포멧이다:

JNIEXPORT returnType JNICALL functionName (JNIEnv* env, jobject thiz, …params)


  • JNIEXPORT, JNICALL: 컴파일러 힌트. 그냥 적자
  • 사용 가능한 자바 타입: jboolean, jbyte, jshort, jint, jlong, jfloat, jdouble, jobject
  • fucntion Name: 함수 이름
    • Separator: _
    • Java_<package name>_<class name>_<method name> // 아래의 예제를 보는게 이해가 빠를듯
  • JNIEnv* env: 헬퍼 클래스. 타입 변환, 클래스 레플리케이션, 메소드 호출이 가능하다
  • jobject thiz: this에 해당한다
  • params: ‘j’로 시작하는 타입 매개변수




예제


#include <jni.h>
#include <stdlib.h> // rand()

extern “C” { // 매우 중요한 부분이다. 반드시 최 외곽에는 extern "C"를 적어 함수 이름이 컴파일러에 의해 뭉개지지 않도록 해야 한다

JNIEXPORT jint JNICALL Java_com_makerj_MyCRandom_nextInt(JNIEnv* env, jobject thiz)
{
return rand();
}

}


'JAVA' 카테고리의 다른 글

SWIG C and JAVA  (0) 2018.03.15
Java bouncycastle 사용하기  (0) 2015.09.17
GSON  (0) 2015.08.13
Java XML 생성 및 저장  (0) 2014.07.20
Java XML 정리  (0) 2014.07.19