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
# 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