En raison des besoins du projet, j'ai récemment étudié la méthode d'appel Java. Comment l'appeler est écrit ici pour une référence facile à l'avenir:
La méthode adoptée est JNI: l'interface native Java, appelée JNI, fait partie de la plate-forme Java et peut être utilisée pour interagir avec le code écrit en Java dans d'autres langues.
Vous trouverez ci-dessous un diagramme schématique du travail JNI extrait d'Internet:
Description globale: Créez d'abord une classe en Java, générez. CLASSE via Javac, puis générez .h à partir de Javah; Copiez ensuite .h à VC et implémentez des fonctions spécifiques par VC.
Après avoir compilé et réussi, générez une DLL, mettez la DLL dans le projet Java et utilisez-la, et elle est terminée.
Parlons des étapes spécifiques (y compris des exemples):
1. Créez une classe Java: chargez DLL, déclarez que la méthode DLL doit être utilisée et que l'implémentation spécifique est responsable de la DLL; Le code est le suivant:
classe publique java2cpp {static {system.loadLibrary ("javacallcpp");} public natif int dll_add (int a, int b); // ajouter public native int dll_sub (int a, int b); // diminuer le public natif int dll_mul (int a, int b); // plusieurs natifs publics intr dll_div (int a, int b); // Divide 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. Générer le fichier .h: CMD au répertoire Java2cpp.java et procédez comme suit:
Étape 1: javac java2cpp.java génère java2cpp.class
Étape 2: Javah Java2CPP génère le fichier d'en-tête java2cpp.h, avec le contenu suivant:
Remarque: Le contenu du fichier d'en-tête java2cpp.h ne peut pas être modifié, sinon une erreur se produira.
3. Faire VC Dynamic Library: Créez un projet de bibliothèque dynamique C / C ++, nommé Javacallcpp, import Java2cpp.h et implémenter sa méthode:
#include "java2cpp.h" #include "dllAPI.h" Jniexport jint jnicall java_java2cpp_dll_1add (jnienv * env, Job obj, jint a, jint b) {int var = 0; var = dll_api_add (a, b); return var;} JNiexport jnint jnical Java_java2cpp_dll_1sub (jNienv * env, travail obj, jint a, jint b) {int var = 0; var = dll_api_sub (a, b); return var;} jniexport jint jnicall java_java2cpp_dll 0; var = dll_api_mul (a, b); return var;} jniexport jint jnicall java_java2cpp_dll_1div (jnienv * env, java obj, jint a, jint b) {int var = 0; var = dll_api_div (a, b); return var;} // fini est finiAjoutez dll_api_add (), soustrayez dll_api_sub (), multipliez dll_api_mul () et divisez dll_api_div ().
Implémenté dans le fichier, le nom du fichier est dllapi.cpp, et l'implémentation est la suivante:
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, int b) {return (a / b);}À l'heure actuelle, le projet se compile toujours, car il y a une erreur dans Inclure <Jni.h>, vous devez ajouter le répertoire où se trouve le JNI, comme suit:
4. Compiler le projet Dynamic Library: Générez Javacallcpp.dll et copiez cette bibliothèque dynamique dans le répertoire du projet Java:
5. Utilisez DLL: exécutez le programme Java, le résultat est le suivant:
À ce stade, la DLL de l'appel Java est terminée.
Résumer
Ce qui précède est la méthode de la bibliothèque dynamique Java - JNI implémentée en appelant C / C ++ que l'éditeur vous présente. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!