노무현 대통령 배너

Double-J's World

blog logo image

Double-J's World » Programming/JAVA

JNI 활용한 "Hello World"

Double-J | 2009. 9. 10. 15:59

A1.jpg

 

Main Code 작성

 

패키지명   : jnitest
파일명      : JNITest

 

JNITest.java

package jnitest;

public class JNITest {

      static{
        System.loadLibrary("NativeHello");
    }

    public static void main(String[] args) {
        NativeHello obj = new NativeHello();
        obj.sayHello();  
    }

}

 

호출할 함수 원형 작성

패키지명 : jnitest
파일명    : NativeHello

NativeHello.java


package jnitest;

public class NativeHello {

     public native void sayHello();

}

 

위의 두 소스가 작성되었다면 메뉴에서 Run -> Build (혹은 Clean & Build) 실행.

제대로 빌드가 되었다면 "build/classes" 란 폴더 아래 패키지명과 동일한 폴더와 *.class 파일이 생성됨을 볼 수 있다. (아래의 캡쳐화면 참고)

a2_newnew.JPG

 

 

javah 로 c/c++ 형태의 헤더파일 생성하기

콘솔창에서 해당 프로젝트의 classes 폴더까지 이동 한후

javah  -jni  packagename.classname

위와 같은 명령어를 실행한다. 실행하면 *.h 파일이 생성된다. (아래 화면 참고)

 

a3_new.jpg

 

DLL 파일 생성

Visual Studio 을 통해 MFC DLL 프로젝트를 생성 후 "Solution Explorer" 에서 프로젝트명을 마우스 우클릭하여 (VS2008 기준)

Properties 에서 다음과같이 %JAVA_HOME%\include 와 %JAVA_HOME%\include\include\win32 폴더를 추가한다.

A4_NEW.jpg

 

include directory 작업을 완료한 후 좀전 작업에서 생성되었던 헤더파일의 내용을 생성된 프로젝트의 헤더파일에COPY-PASTE 를 한다. (파일 자체를 복사해도 큰 문제는 없는듯..) 기존의 내용은 가급적 주석처리.

프로젝트내의 헤더파일명과 동일한 *.cpp 파일에서 기본으로 생성된 필요 없는 내용은 주석처리를 한 후 헤더파일에 작성되어있는 함수를 실제로 구현해준다. (다음 그림참고)

a5.jpg

 

작성후 빌드 하면 *.dll 파일이 생성된다. 이 파일을 JAVA프로젝트에 복사한다. (다음 화면 참고)

a6_newnew.JPG

 

이제 Run 을 하면 실제 동작화면을 볼 수 있다.

 

 

이 글은 스프링노트에서 작성되었습니다.



(go to top)