- java사용시 C 나 C++ 라이브러리를 사용해야 할때 JNI로 연동하는 방법
💡 순서
- java 코드 작성
- 헤더 생성
- c코드 작성
- 프로젝트 설정변경
- 빌드하여 dll 생성
- java 실행
코드 작성
hello.dll을 가져와서 sayHello라는 메소드 사용하겠다.
package jniTest;
public class HelloJNI {
static {
System.loadLibrary("hello");
//hello.dll
}
private native void sayHello();
public static void main(String[] args) {
new HelloJNI().sayHello();
}
}
헤더 작성
cd java파일 경로
javac -h . HelloJNI.java
- 생성된 헤더 code 복사 후 visual studio header에 추가.
- 헤더파일 → 추가 → 새 항목
- 이름 생성된 헤더와 이름 맞춰줄 것.
- 헤더 code
- 헤더파일 → 추가 → 새 항목
#pragma once
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class jniTest_HelloJNI */
#ifndef _Included_jniTest_HelloJNI
#define _Included_jniTest_HelloJNI
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: jniTest_HelloJNI
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_jniTest_HelloJNI_sayHello
(JNIEnv*, jobject);
#ifdef __cplusplus
}
#endif
#endif
2. C코드 작성
추가 → 새항목 → C++파일(.cpp) → 솔루션 이름(hello.cpp)
3. 헤더를 참고하여 코드 작성
#include "pch.h"
#include <jni.h>
#include <iostream>
#include "jniTest_HelloJNI.h"
JNIEXPORT void JNICALL Java_jniTest_HelloJNI_sayHello
(JNIEnv*, jobject) {
std::cout << "HELLO from heldfwfwlo.dll";
}
- 4. 프로젝트 설정 변경
- x64로 변경
- 프로젝트 → 맨밑 속성 → C/C++ → 일반 → 추가 포함 디렉터리 → 편집 → jdk 안 include , include 안 win32 추가
- x64로 변경
5. 프로젝트 빌드 후 자바에서 실행
우클릭 후 솔루션 빌드
자바에서 실행
1. 생성된 dll 프로젝트 상위폴더에 복사
2. 실행