프로젝트의 요구로 인해 최근에 Java Calling DLL을 연구했습니다. 전화하는 방법은 향후 쉬운 참조를 위해 여기에 작성되었습니다.
채택 된 방법은 JNI : JNI라고 불리는 JNI : Java Native Interface입니다. Java 플랫폼의 일부이며 다른 언어로 Java로 작성된 코드와 상호 작용하는 데 사용할 수 있습니다.
아래는 인터넷에서 추출한 JNI 작업의 개략도입니다.
전체 설명 : 먼저 Java에서 클래스를 생성하고 Javac을 통해 .class를 생성 한 다음 Javah에서 .h를 생성합니다. 그런 다음 .h를 VC로 복사하고 VC에 의해 특정 기능을 구현하십시오.
컴파일 및 통과 후 DLL을 생성하고 DLL을 Java 프로젝트에 넣고 사용하면 완료됩니다.
특정 단계 (예제 포함)에 대해 이야기 해 봅시다 :
1. Java 클래스 빌드 :로드 DLL, DLL 메소드를 사용해야한다고 선언하고 특정 구현은 DLL을 담당합니다. 코드는 다음과 같습니다.
공개 클래스 java2cpp {static {system.loadlibrary ( "javacallcpp");} public native int dll_add (int a, int b); // 공개 기본 int dll_sub (int a, int b) 추가; // 공개 네이티브 int dll_mul (int a, int b) 감소; // 다중 공개 기본 int dll_div (int a, int b); // public static void main (String args []) {int sum = 0; java2cpp test = new java2cpp (); sum = test.dll_add (2, 4); system.out.println ( "java call cpp dll result :" + sum);}}2. .h 파일을 생성 : cmd는 java2cpp.java 디렉토리로 다음을 수행합니다.
1 단계 : javac java2cpp.java java2cpp.class를 생성합니다
2 단계 : Javah Java2CPP 다음 내용으로 java2cpp.h 헤더 파일을 생성합니다.
참고 : 헤더 파일의 내용 Java2cpp.h의 내용을 수정할 수 없습니다. 그렇지 않으면 오류가 발생합니다.
3. VC Dynamic Library 만들기 : Javacallcpp라는 C/C ++ Dynamic Library 프로젝트 작성 Java2cpp.h를 가져 와서 방법을 구현하십시오.
#include "java2cpp.h"#include "dllapi.h"jniexport jint jint jint jincall java_java2cpp_dll_1add (jnienv *env, job obj, jint a, jint b) {int var = 0; var = dll_api_add (a, b); java_java2cpp_dll_1sub (jnienv *env, job obj, jint a, jint b) {int var = 0; var = dll_api_sub (a, b); return var;} jniexport jint jnicall java_java2cpp_dll_1mul (jnienv *a jint, jint a, jint a, jnienv). = 0; var = dll_api_mul (a, b); return var;} jniexport jint jincall java_java2cpp_dll_1div (jnienv *env, job obj, jint a, jint b) {int var = 0; var = dll_api_div (a, b);} //} //} //dll_api_add ()를 추가하고 dll_api_sub ()를 빼고 dll_api_mul ()를 곱한 다음 dll_api_div ()를 나누십시오.
파일에서 구현 된 파일 이름은 dllapi.cpp이며 구현은 다음과 같습니다.
int dll_api_add (int a, int b) {return (a+b);} int dll_api_sub (int a, int b) {return (ab);} int dll_api_mul (int a, int b) {return (a*b);} int dll_api_div (int b) {return (a/b);현재 프로젝트는 여전히 컴파일됩니다. <jni.h> 포함 오류가 있으므로 다음과 같이 JNI가있는 디렉토리를 추가해야합니다.
4. 동적 라이브러리 프로젝트 컴파일 : Javacallcpp.dll을 생성 하고이 동적 라이브러리를 Java 프로젝트 디렉토리에 복사하십시오.
5. DLL 사용 : Java 프로그램을 실행하십시오. 결과는 다음과 같습니다.
이 시점에서 Java Call DLL이 완료되었습니다.
요약
위의 것은 Java Dynamic Library -JNI의 방법입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!