최근에 저는 웹 페이지에서 얼굴 인식을위한 프로젝트를 수행했으며 C ++로 얼굴 인식 알고리즘을 썼습니다. 그러나 웹 페이지에서 Java 백엔드를 사용해야합니다. 여기에는 Java가 DLL을 호출하는 문제가 포함됩니다. 다음은 관련 정보를 찾아 편집자가 달성 한 간단한 예입니다.
1. 첫 번째 단계는 Java에서 새로운 클래스를 만드는 것입니다.
위 그림과 같이 문장 시스템에주의를 기울이십시오 .Loadlibrary ( "javacallcpp");, 이것은 dll 파일을로드하는 코드입니다. 그런 다음 DLL에서 아래에 정의 된 추가, 뺄셈, 곱셈 및 분할 방법을 구현해야합니다.
2. 파일을 컴파일하면 파일 이름은 java2cpp.java입니다 . 먼저 클래스 파일로 컴파일합니다. Eclipse를 사용하는 경우 프로젝트 디렉토리의 빈 폴더에서 파일이 자동으로 생성되었습니다. 명령 줄과 함께 CMD 창을 열고, .java 파일이있는 디렉토리로 CMD 창을 열고, 명령 Javac Java2cpp.java, 즉 Java2cpp.class를 생성합니다.
그런 다음 javah java2cpp 명령을 실행하여 java2cpp.h 헤더 파일을 생성하지만이 단계는 종종 실패합니다. 다른 방법이 성공할 수 있습니다. Eclipse 프로젝트의 디렉토리를 입력하고 BIN 폴더를 입력하고 Javah -ClassPath 명령을 실행하십시오. -jni package name.class name (com.test.jni.java2cpp), com_test_jni_java2cpp.h를 생성하십시오
3. vs에서 새 프로젝트 Win32를 만듭니다. 이름은 다음과 같습니다. 두 번째 단계는 다음과 같습니다.
4. 두 번째 단계에서 생성 된 헤더 파일을 프로젝트 폴더로 복사 한 다음 가져옵니다.
5. 헤더 파일에서 메소드를 구현하십시오.
(1) 새 헤더 파일 DLLAPI.H를 작성하면 코드는 다음과 같습니다.
#include "com_test_jni_java2cpp.h"int dll_api_add (int a, int b); int dll_api_sub (int a, int b); int dll_api_mul (int a, int b); int dll_api_div (int a, int b);
(2) 위의 방법을 구현하려면 새 dllapi.cpp를 만듭니다. 코드는 다음과 같습니다.
#include "stdafx.h"#include <iostream> #include "dllapi.h"int dll_api_add (int a, int b) {return (a + b);} int dll_api_sub (int a, int b) {return (a - b); dll_api_div (int a, int b) {return (a / b);} (3) testjni.cpp에 코드를 추가하여 com_test_jni_java2cpp.h 메소드를 구현하십시오. 코드를 추가 한 후 다음과 같습니다.
// testjni.cpp : dll 응용 프로그램의 내보내기 기능을 정의합니다. //#은 "stdafx.h"#include "testjni.h"#include "com_test_jni_java2cpp.h"#include "dllapi.h"// 포함 된 변수를 내보내는 예입니다. testjni_api int ntestjni = 0; 이것은 변수를 내보내는 예입니다. testjni_api int fntestjni (void) {return 42;} // 이것은 내보낸 클래스의 생성자입니다. // 클래스 정의에 대한 정보는 testjni.hctestjni :: ctestjni () {return;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1add (jnienv *env, job obj, jint a, jint b)를 참조하십시오. var = dll_api_add (a, b); return var;} jniexport jint jnicall java_com_test_jni_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_com_test_jni_java2cpp_dll_1mul (jnienv *env, job obj, jint a, jint b) {int var = 0; var = dll_api_mul (a, b); return var;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1div (jnienv *env, job obj, jint a, jint b) {int var = 0; var = dll_api_div (a, b); 반환 var;}(4) DLL을 생성하면 프로젝트 폴더 아래의 디버그 폴더에서 testjni.dll을 찾을 수 있습니다. 그러나 DLL의 Java에서 Javacallcpp라는 명명이 필요하기 때문에 현재 프로젝트의 이름을 Javacallcpp로 바꾸고 Javacallcpp를 재생합니다. [이 단계는 생성하지 못하고 다음과 같이 경로를 추가합니다]
6 호출 방법
5 단계에서 생성 된 javacallcpp.dll을 JRE 설치 경로 하의 BIN 폴더로 복사하고 Java 프로그램을 실행하십시오. 결과는 다음과 같습니다.
위의 내용은 Java가 편집자가 소개 한 C ++ DLL 라이브러리를 어떻게 부르는지에 대한 전체 설명입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!