Baru -baru ini, saya telah melakukan proyek untuk pengakuan wajah di halaman web dan menulis algoritma pengenalan wajah di C ++. Namun, saya harus menggunakan backend java di halaman web, yang melibatkan masalah Java Calling DLL. Berikut ini adalah contoh sederhana dari apa yang telah dicapai editor dengan mencari informasi yang relevan.
1. Langkah pertama adalah membuat kelas baru di Java
Seperti yang ditunjukkan pada gambar di atas, perhatikan sistem kalimat. Maka kita perlu mengimplementasikan penambahan, pengurangan, multiplikasi dan metode divisi yang didefinisikan di bawah ini dalam DLL.
2. Kompilasi file, nama file adalah java2cpp.java , pertama -tama kompilasi ke dalam file kelas. Jika Anda menggunakan Eclipse, file telah secara otomatis dihasilkan, di folder bin di direktori proyek. Kompilasi dengan baris perintah, buka jendela CMD, CD ke direktori tempat file .java berada, dan jalankan perintah javac java2cpp.java, yaitu, hasilkan java2cpp.class
Kemudian jalankan perintah javah java2cpp untuk menghasilkan file header java2cpp.h, tetapi langkah ini sering gagal. Metode lain bisa berhasil. Masukkan direktori proyek Eclipse, masukkan folder bin, jalankan perintah javah -classpath. -jni nama paket. Nama kelas (com.test.jni.java2cpp), dan kemudian menghasilkan com_test_jni_java2cpp.h
3. Buat proyek baru Win32 di VS, sebutkan: testjni, langkah kedua adalah sebagai berikut:
4. Salin file header yang dihasilkan pada langkah kedua ke folder proyek dan kemudian impor.
5. Implementasikan metode dalam file header:
(1) Buat file header baru Dllapi.h, kodenya adalah sebagai berikut:
#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) Buat DLLAPI.CPP baru untuk mengimplementasikan metode di atas, kode ini adalah sebagai berikut:
#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);} int dll_api_sub (int a, int b) {return (a - b);} int dll_api_sub (int a, int b) {a - b);} int dll_api_m DLL_API_DIV (int a, int b) {return (a / b);} (3) Tambahkan kode ke testjni.cpp untuk mengimplementasikan metode com_test_jni_java2cpp.h. Setelah menambahkan kode adalah sebagai berikut:
// testjni.cpp: Menentukan fungsi ekspor aplikasi DLL. //#Sertakan "stdafx.h" #include "testjni.h" #include "com_test_jni_java2cpp.h" #include "dllapi.h" // Ini adalah contoh variabel pengekspor testjni_api int ntestjni = 0; // Ini adalah contoh dari fungs. Testjni_api int fntestjni (void) {return 42;} // Ini adalah konstruktor kelas yang diekspor. // Untuk informasi tentang definisi kelas, lihat testjni.hctestjni :: ctestjni () {return;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1add (jnienv *env, pekerjaan obj, jint a, jint b) {jnienv *env, Job obj, Jint a, jint b) {jnienv *env, Job Obj, Jint a, jint b) {jnienv *env, Job Obj, Jint a, Jint b) {JNienV; var = DLL_API_ADD (a, b); return var;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1sub (jnienv *env, pekerjaan 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, pekerjaan 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, pekerjaan obj, jint a, jint b) {int var = 0; var = DLL_API_DIV (a, b); mengembalikan var;}(4) Hasilkan DLL, dan Anda dapat menemukan testjni.dll di folder debug di bawah folder proyek. Namun, karena kami mengharuskan DLL dinamai JavaCallCPP di Java, kami mengganti nama proyek menjadi JavaCallCPP saat ini, dan kemudian meregenerasi JavaCallCPP. [Langkah ini akan gagal menghasilkan, tambahkan jalur sebagai berikut]
6 Metode Panggilan
Salin javacallcpp.dll yang dihasilkan pada langkah 5 ke folder bin di bawah jalur instalasi JRE dan jalankan program Java. Hasilnya adalah sebagai berikut:
Di atas adalah deskripsi lengkap tentang bagaimana Java menyebut perpustakaan C ++ DLL yang diperkenalkan editor kepada Anda. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!