Jni

halwas Messages postés 14 Date d'inscription vendredi 26 novembre 2004 Statut Membre Dernière intervention 20 avril 2006 - 16 août 2005 à 09:37
scaryman Messages postés 492 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 16 mai 2007 - 17 août 2005 à 13:41
bonne programation
bonjour,je suis entraint de'apprendre comment interfacer entre un programme c++ et un code java .j'ai debute avec un programme qui parait simple:
public class HelloWorld {
static { System.loadLibrary("HelloWorld"); }


public static native void printCpp();


public static void main(String args[]) {
System.out.print("Hello ");
HelloWorld.printCpp();
}
}

j'ai fait ses actions:
javac HelloWorld
javah -jni HelloWorld
un fichier HelloWorld est genere contenant:

/*********************************************************/
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */


#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: printCpp
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_printCpp
(JNIEnv *, jclass);


#ifdef __cplusplus
}
#endif
#endif
/***************************************************/

Maintenant je ne sait pas comment poursuivre la generation d'un dll , où je doit mettre le code
c,comment l'executer afin de trouver le resultat



AIDEZ moi s'il vous plait.Merci

4 réponses

scaryman Messages postés 492 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 16 mai 2007 12
16 août 2005 à 14:26
salut

il te faut un compilateur ou un programme d'édition de code (moi j'utilise Dev-cpp).

Ensuite tu demande de créer une dll que tu sauveras dans le répertoire de ta classe.

Ensuite dans dllmain.cpp tu remplace la ligne

#include "dll.h"

par

#include "HelloWorld.h"

et supprime tout le reste du fichier dllmain.cpp a part les 2 #include.

Ensuite copie JNIEXPORT void JNICALL Java_HelloWorld_printCpp(JNIEnv *, jclass) et place ton code à la suite.

Tu n'as plus qu'à compiler et tu obtiendras ta dll.

Voila

si tu as d'autres questions n'hésites pas

++
0
halwas Messages postés 14 Date d'inscription vendredi 26 novembre 2004 Statut Membre Dernière intervention 20 avril 2006
17 août 2005 à 08:22
bonne programation
bonjour,
merci pour votre aide .j'ai essaié mais j'ai pas trouvé de resultat.
j'ai crée un fichier .c dans le meme repertoire intitule: HelloWorld.c contenat:
/**************************************************************/
#include <jni.h>
#include


JNIEXPORT void JNICALL Java_World_printCpp(JNIEnv *, jclass) {
// Un affichage sur la console en C++
cout << "Hello world in C++" << endl;
}

/*************************************************************/
j'ai mis le repertoire de la classe dans C:\Program Files\Microsoft Visual Studio
j'ai utilisé l'invite de commande.Puis
c:\Program Files\Microsoft Visual Studio>VC98\bin\CL -I "C:\j2sdk1.4.1_07\include" -I"C:\j2sdk1.4.1_07\include\win32" -LD HelloWorld.c FeHelloWorld.dll
mais un message apparait:


Command line warning D2024 : unrecognized source file type 'FeHelloWorld.dll', object file assumed


HelloWorld.c


C:/j2sdk1.4.1_07/include\jni.h :fatal error :Cannot open include file : 'stdio.h' :No such file or directory

pouvez -vous m'aider en presisant s'il vous plait la reponse.
c'est tres gentil Merci
0
halwas Messages postés 14 Date d'inscription vendredi 26 novembre 2004 Statut Membre Dernière intervention 20 avril 2006
17 août 2005 à 13:24
bonne programation
bonjour je fait un projet code en c++ mais l'interface avec le java .maintenant j'ai voulu assembler les deux codes java et c++ pour obtenir mon projet .j'ai essaiyé le JNI mais je n'ai pas pu .je sais interfacé entre le java et le C .
mais je n'ai pas pu le faire avec le c++ .Pouvez vous m'aidez s'il vous plait
0
scaryman Messages postés 492 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 16 mai 2007 12
17 août 2005 à 13:41
désolé je n'ais jamais eu cette erreur

cela a toujours bien fonctionné chez moi
0
Rejoignez-nous