1. 이클립스 및 JDK 다운로드 받기
http://www.oracle.com/technetwork/java/javase/downloads/index.html에서 JDK 최신 버전 다운로드 받아 설치한다.
http://developer.android.com/tools/help/adt.html 에서 ADT(SDK+Eclipse) + NDK를 다운받는다.
2. JDK PATH등록
컴퓨터-> 우클릭-> 속성 -> 고급 시스템 설정 혹은
제어판\시스템 및 보안\시스템 -> 고급 시스템 설정을 불러온다.
그리고 고급탭의 하단의 환경변수를 누른다.
시스템 변수에서 새로 만들기를 눌러( 모르는 사이 만들어 둔 것이 있을 수도 있다.)
변수이름에 JAVA_HOME
변수 값에 1.번에서 설치한 경로를 적어준다. c:\xxx...\jdk1.8
그리고 확인
같은 위치에서 Path라는 변수를 찾는다. 그리고 (위치는 상관없지만) 가장앞부분에
%JAVA_HOME%\bin; (세미콜론 중요!!)을 추가한다. 이때 기존의 값을 지우면 안된다.
그리고 확인
위의 작업이 끝나면 cmd창을 열어( 이전에 열렸던 것은 닫았다가 새로 연다. )
javac를 쳐본다.
3. JAVA
public class testClass {
static {
System.loadLibrary("jniTestDll");
}
public native static String Hello();
public static void main(String[] args) {
System.out.println(Hello());
return;
}
}
위처럼 Class 하나를 만든다.
4. JNI Header 만들기
cmd창을 열고 workspace경로 이동한후
(workspace)\(projectName)\src\(packageName)\ 으로 옮겨간다
dir을 통해 (ClassName).java가 보이면 된다.
그리고 javac를통해 (ClassName).class를 만들면된다.
* http://lng1982.tistory.com/153 이분의 블로그를 참조하자.
이후 (workspace)\(projectName)\src\ 으로 이동하여
javah -jni (packageName).(className) 을 입력해주면
(packageName)_(className).h 가 만들어진다.
* 기분상 위의 javac과정을 안해도 되는듯 하다.
이작업은 Java Class내부의 Native관련된 함수를 수정할때마다 해주면된다.
친절한 설명은 이곳으로 : http://cafe.naver.com/overtheprogrammer/93
* JNI Header를 만드는 Eclipse의 자동화 기능이 있지만 아직 벌레가 살고 있었다.
5. DLL 만들기
visual studio 2012(vs11) 버전을 이용하였고
새프로젝트만들기 -> win32 콘솔 응용 프로그램 -> 다음
이때 응용프로그램 종류를 DLL로 선택하고 SDL검사의 체크만 풀어준후 확인을 누른다.
그리고 4.에서 만들어진 헤더파일을 프로젝트 폴더로 복사하고 프로젝트/헤더 파일에 추가한다.
상단의 옵션 중앙에 [자동 ] 이라는 텍스트 오른쪽으로 보이는 debug를 선택하여 Release모드로 바꿔준후 프로젝트 속성으로 들어가
C/C++ 에서 추가 포함 디렉터리에 설치된
JDK\include
JDK\include\win32
를 입력해준다.
(projectName).cpp 안에
#include "stdafx.h"
#include "testDLL_testClass.h"
#include <stdlib.h>
JNIEXPORT jstring JNICALL Java_testDLL_testClass_Hello
(JNIEnv *env, jclass jobj){
char hello[] = "Hello JNI!";
jstring jvHello;
jvHello = env->NewStringUTF(hello);
return jvHello;
};
를 작성한다. 그리고 빌드(f7)하면
프로젝트폴더안에 \Release폴더가 생성되며 (projectName).dll이 생성된다.
이를 eclipse의 workspace\project\ 로 넣어주면된다. (이때 src및 bin 폴더가 보인다.)
그럼 run As java application을 수행하자.
Hello JNI! 혹은 Can't load IA 32-bit .dll on a AMD 64-bit platform이 보일것다.
그럼 다시 visual studio로 돌아와 좀전의 Release오른쪽 부분의 win32옆에 화살표를 통해 구성관리자를 열자
그리고 플래폼 하단의 화살표를 눌러 새로만들기를 누르고
ARM 대신 x64를 선택한후 확인을 누르자
그리고 다시 빌드하면 \x64\Release가 생성되었으며 이곳의 dll을 옮겨 실행하면
Hello JNI!가 보일것이다.
자세한 설명은 : http://blog.naver.com/lestat85/150175522396를 참조하자.