본문 바로가기
자바 코드

JNI로 개발하기 (4. C 컴파일 및 자바로 dll실행하기)

by 우딬 2021. 3. 17.

개발 순서

 

1. dll에 있는 함수를 쓰기 위해서 dll의 함수와 똑같은 함수를

자바 코드로 작성하고 dll에 있는 내용을 쓰는식으로 해야한다.

*그래서 자바 코드 작성부터 시작한다.

 

(dll을 불러오는데 자바 코드를 왜 작성하는지 이해를 못해서 한참 책을 몇번을 읽었는지 모른다)

2. 자바 코드 작성 후 자바 헤더를 만들어준다.

3. c에 내가 만든 자바 헤더를 첨부하고 dll을 만들어준다.

4. 자바에서 dll을 읽어준다.

 

6. C 컴파일 하기

 

일반 컴파일과는 다르게 #include <jni.h> 라는 헤더를 쓰고 있기 때문에 
자바에 있는 파일을 연결해서 컴파일해야한다.

아니면 헤더가 뭔지 모른다고 컴파일이 안되기 때문이다.

 

gcc 컴파일 실행하기

 

 

이 책은 리눅스 책이기 때문에 인터넷을 뒤져 저렇게 쓰는거라고 했다.
하지만 재대로 위치를 찾지 못하는듯하여 모든 값을 다 적어 보기로 했다.

본인 자바 위치를 확인하고 그 경로를 찾아 넣으면 된다.
이번에 자바에 include라는 폴더도 들어가서 보고 재밌었다.

 

gcc -fpic -c -I"\Program Files\Java\jdk1.8.0_231\include" -I"\Program Files\Java\jdk1.8.0_231\include\win32" helloworld.c

 

이렇게 작성하면 문제없이 컴파일이 진행된다.

 

오브젝트 파일을 만들었습니다.

dll 파일 실행하기

오브젝트 파일을 dll파일로 만들기

 

이렇게 다시 dll을 만들었다.

 

이제 실행해보자

AA

func
show1
show2 : 9 
show3 : 1 2 3 
show4 : d 
show5 : a b c 
show6 : AA

Method func ok ... 

 

잘 실행이되는데 func가 왜 맨 위로 올라가는거지? c가 잘못됬나? 
아무튼 연습용이니 이정도로 해보자

 

특히 System.loadLibrary("helloworld64"); 이게 잘 안돌아간다.

 

System.load("") 이걸 사용하여 절대경로로 작성해서 dll을 돌리면 잘 될 것 입니다.

댓글