[JAVA] code natif en C ou comment je suis trop dans la merde!

code natif en C ou comment je suis trop dans la merde! [JAVA] - Programmation

Marsh Posté le 17-02-2002 à 19:48:34    

Comment certain on put se rendre compte j?ai un projet à rendre dans pas très longtemps voir mes posts précédents? :hot:
 
Bon alors mon interface java marche bien mais voilà maintenant j?avance en terrain ennemi !!
 
Les DLL Arggggg? :sweat:
 
J?ai trouvé un exemple sur le net mais j?arrive pas à le faire marcher !!! (rem :c?est pour UNIX)
 
Si j?ai bien compris : :??:
On fait une class avec une méthode native.
On crée un .h de cette class.
On fait une dll avec un code en C et un include jni.h et le .h précédent.
 Et pouf c?est bon !!!!
 
Premier point comment on fait pour faire un .h avec une class java en utilisant javah ?
Parce que l?exemple est pas très claire?
 
Voilà on va commencer par le début ! :sweat:
 
Ha et si vous avez une autre méthode (infaillible :love: ) ou un exemple avec les sources n?hésitez pas !!! :love:
 
 
Voilà et merci ! :jap: :D
 
 
PS: Cherrytree si tu veux te rattraper aucun problème :D :love:

Reply

Marsh Posté le 17-02-2002 à 19:48:34   

Reply

Marsh Posté le 17-02-2002 à 22:44:45    

commence par lire ca avant d'implémenter qqch
 
http://java.sun.com/docs/books/tut [...] index.html
 
ca ne sert à rien de t'embarquer dans un brol que tu ne comprends pas.


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 17-02-2002 à 23:02:21    

Aïe, Babekiller en ce qui concerne les choses simples, les aspects plan-plan du langage, je suis OK. Cela dit JNI, j'ai encore jamais expérimenté.
 
Mais t'es un gars sympa alors je vais regarder ça un peu de près. Le sujet de ton exo c'est quoi au juste ?


---------------
Le site de ma maman
Reply

Marsh Posté le 17-02-2002 à 23:33:58    

Bon, le lien de dark est une version plus complète de ce que tu dis, mais en gros tu as le truc. Ton programme se charge d'appeler des fonctions définies dans d'autres langages de programmation. Toutes les méthodes natives (c'est à dire non-Java) doivent cependant être déclarées dans ta classe Java, en utilisant une signature particulière (tu dois préciser que la méthode EST native).Par exemple :
 

Code :
  1. public native typeDeRetour nomDeLaMethode();


 
En dessous si tu veux créer une dll, il faut préciser le nom de la librairie que tu créeras plus tard :
 

Code :
  1. System.loadLibrary("nomDeLaDLL" );


 
Ensuite du compile classiquement avec javac. Puis tu génères le fichier header (.h) relatif aux fonctions natives (C par exemple) que tu as besoin d'intégrer. Pour cela, tu tapes :
 

Code :
  1. javah -jni nomDeLaClasseJavaQuiFaitLesAppels


 
Tu édites les fichiers pour voir quels noms de fonctions le compilateur s'attend à trouver. Ne modifie pas le .h, ça doit pas marcher sinon. Ces noms de fonctions commencent tous par

Code :
  1. Java_

.
 
Bon, ensuite tu crées (ou tu modifies) tes fichiers en codes non Java. En particulier si tu modifies, il faut que tu t'arranges pour que les noms de fonctions soient corrects.
 
Enfin pour créer la DLL, il te faut Visual C++ et rentrer une ligne de commande barbare en guise de compilation. Le code source pour le HelloWorld est à l'adresse que t'a sympathiquement donné dark.
 
Sinon, y a un truc qui m'inquiète dans ton post : tu as écris, je cite : "J?ai trouvé un exemple sur le net mais j?arrive pas à le faire marcher !!! (rem :c?est pour UNIX)"
 
A moins que je ne me trompes lourdement, les DLL c'est pas pour UNIX, mais Windows... Alors repends-toi ! Et télécharge le tutorial Java, comme je l'ai conseillé.


---------------
Le site de ma maman
Reply

Marsh Posté le 17-02-2002 à 23:35:09    

J'espère que ça réponds à tes attentes, sur ce p'tit gars, je me couche. Et rentre cette langue, ça fait désordre :D :D


---------------
Le site de ma maman
Reply

Marsh Posté le 18-02-2002 à 21:59:17    

[:romn]

 

[jfdsdjhfuetppo]--Message édité par Babekiller--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 19-02-2002 à 00:00:19    

Petit batard, va (c'est amical ici, hein) :D
 
Concernant les dll, je peux pas t'aider, moi je suis 100% pure Java, comme ils disent... Déjà je me suis fait chier à décortiquer le tutorial parce que tu me l'avais demandé, hum... gentillement on va dire.

 

[jfdsdjhfuetppo]--Message édité par Cherrytree--[/jfdsdjhfuetppo]


---------------
Le site de ma maman
Reply

Marsh Posté le 21-02-2002 à 15:08:09    

C'est tout bon la DLL marche trés bien!!!!!
 
 
Voilà merci à tous!!! :jap:
 
Ouf j'ai fini juste juste !!!! :sweat:

Reply

Marsh Posté le 21-02-2002 à 15:12:46    

Tu pourrais nous montrer le source, ça m'intéresse vraiment, maintenant que je me suis impliqué. Et puis ce sera ta juste contribution à ce topic. Evidemment, si c'est copyrighté... :D


---------------
Le site de ma maman
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed