플밍

JNI 기본적인 사용방법 본문

프로그래밍/Java

JNI 기본적인 사용방법

너구리안주 2014. 3. 11. 22:57

JNI 에 대한 아주 기본적인 사용방법이다.

아주 단순한 자바에서 cpp의 함수 호출만 하는 과정이다.

JNI가 뭔지 맛보기만...

※ 클래스, 함수호출, 스트링등 기타 자세한 사용법은 관련문서를 참조

#ads_1


1. 자바파일 작성

<HelloNative.java>

class HelloNative{
 native public static void hello();
 
 static{
  System.loadLibrary("HelloNative");
 }
}

class HelloNativeTest{
 public static void main(String[] args){
  HelloNative.hello();
 }
}



2. 컴파일

# javac HelloNative.java



3. c 헤더파일 자동 생성

# javah HelloNative

 


4. cpp 파일작성

<HelloNative.cpp>

#include <iostream>

using namespace std;

#include "HelloNative.h"

JNIEXPORT void JNICALL Java_HelloNative_hello(JNIEnv* env, jclass cls){
 cout << "Hello world" << endl;
}


#ads_2

 


5. 커맨더라인에서 cpp 컴파일

// EHsc : try catch 안 썼을때 throw가 발생하면 자동저장소에 있는 개체를 자동으로 소멸시킴,  I : 인클루드,  /Fe : 실행파일의 이름을 변경
# cl /EHsc /I %JAVA_HOME%\include /I %JAVA_HOME%\include\win32 HelloNative.cpp /Fe HelloNative.dll

※ cl 이 안먹힐경우 아래 배치파일을 실행하고 난뒤 다시 한다 (경로는 자신의 환경에 맞게 변경한다)
# C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat




6. 자바파일 실행

# java HelloNative

Hello world  //결과

 


※ 자바클래스의 클래스명세(Reflection)를 볼때 (cpp에서 호출할때 이 정보를 알아야 호출할 수 있음)

# javap -s private HelloNative

#ads_3

Comments