Karena kebutuhan proyek, saya baru -baru ini mempelajari metode Java Calling DLL. Cara menyebutnya ditulis di sini untuk referensi mudah di masa depan:
Metode yang diadopsi adalah JNI: Java Native Interface, yang disebut JNI, adalah bagian dari platform Java dan dapat digunakan untuk berinteraksi dengan kode yang ditulis dalam Java dalam bahasa lain.
Di bawah ini adalah diagram skematik dari pekerjaan JNI yang diekstraksi dari internet:
Deskripsi Keseluruhan: Pertama -tama buat kelas di Java, buat .class melalui Javac, dan kemudian menghasilkan .h dari Javah; Kemudian salin .h ke VC, dan terapkan fungsi spesifik oleh VC.
Setelah menyusun dan lewat, hasilkan DLL, masukkan DLL ke dalam proyek Java dan gunakan, dan selesai.
Mari kita bicara tentang langkah -langkah spesifik (termasuk contoh):
1. Bangun kelas Java: Load DLL, nyatakan bahwa metode DLL harus digunakan, dan implementasi spesifik bertanggung jawab untuk DLL; kodenya adalah sebagai berikut:
kelas publik java2cpp {static {system.loadLibrary ("javaCallcpp");} public asli int dll_add (int a, int b); // tambahkan int Dll_sub asli publik (int a, int b); // Kurangi int Dll_mul asli publik (int a, int b); // Beberapa Int Dll_Div asli Publik (int a, int b); // Bagilah 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 Hasil:" + Sum);}}2. Hasilkan file .h: cmd ke direktori java2cpp.java dan lakukan hal berikut:
Langkah 1: Javac java2cpp.java menghasilkan java2cpp.class
Langkah 2: Javah Java2cpp menghasilkan file header java2cpp.h, dengan konten berikut:
Catatan: Konten file header java2cpp.h tidak dapat dimodifikasi, jika tidak kesalahan akan terjadi.
3. Membuat Perpustakaan Dinamis VC: Buat Proyek Perpustakaan Dinamis C/C ++, bernama JavaCallCPP, impor java2cpp.h dan terapkan metodenya:
#include "java2cpp.h" #include "Dllapi.h" Jniexport Jint Jnicall Java_java2cpp_dll_1add (jnienv *env, pekerjaan obj, jint a, jint b) {int var = 0; var = Dll_Api_add (a, b) {int var = 0; var = dl_api_add (a, b) {int var = 0; var = Dll_Api_add (a) 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 jva_java2cpp_dll_1mul (jnicall java_java2cpp_dll_1mul (jnicall java_java2cpp_dll_1mul (jnicall java_java2cpp_dll_1mul (jnicall * 0; var = DLL_API_MUL (a, b); return var;} jniexport jint jnicall java_java2cpp_dll_1div (jnienv *env, pekerjaan obj, jint a, jint b) {int var = 0; var = dll_api_div (a, b);Tambahkan DLL_API_ADD (), Kurangi DLL_API_SUB (), gandakan dll_api_mul (), dan bagilah dll_api_div ().
Diimplementasikan dalam file, nama file adalah dlapi.cpp, dan implementasinya adalah sebagai berikut:
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 a, a, int) {a*b);} int dll_api_div (int a, b) {a*b);Pada saat ini, proyek masih dikompilasi, karena ada kesalahan dalam termasuk <jni.h>, Anda perlu menambahkan direktori di mana JNI berada, sebagai berikut:
4. Kompilasi Proyek Perpustakaan Dinamis: Hasilkan javacallcpp.dll dan salin pustaka dinamis ini ke direktori proyek Java:
5. Gunakan DLL: Jalankan program Java, hasilnya adalah sebagai berikut:
Pada titik ini, panggilan Java DLL telah selesai.
Meringkaskan
Di atas adalah metode Java Dynamic Library - JNI diimplementasikan dengan menelepon C/C ++ yang diperkenalkan oleh 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!