J'ai un programme qui est developpé en langage C ,y-a t_il une methode ou un outil performant qui me permet de basculer entre le deux langages et d'utiliser les fonctionnalités avec java des source developpé en c.
J'ai un programme qui est developpé en langage C ,y-a t_il une methode ou un outil performant qui me permet de basculer entre le deux langages et d'utiliser les fonctionnalités avec java des source developpé en c.
Non: un tel convertisseur d'applications n'existe pas.
Tu vas devoir développer ton application depuis le départ en java.
De plus, java est un langage "orienté objet", et pas le C. Donc plutôt qu'une conversion de code "pas à pas", il te faut envisager de repenser la conception même de ton application en objet pour vraiment tirer partie du langage.
Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
Mes articles et tutoriaux & Mon blog informatique
bonjour
sinon, il est possible d'utiliser des librairies via JNI (voir les cours et tutoriels java) ce qui évite la réécriture, tu devra surement faire un wrapper pour que tout fonctionne sans modifier ton code c.
Il n'y a pas de problème, il n'y a que des solutions.
Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran
Mes Articles : Mon premier article est sur le language D
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Merci pour votre aide, mais tu peux me dire ce quoi wrapper?
et aussi je veut te dire que j'ai besoin seulement d'appeler une classe en c lorsque je clique sur une bouton.
C'est un outil composé de trois parties ,2 developpées en java et une en c ,et il y-a aussi un menu principale qui vous permet de choisir une de ce trois parties .Cette men principale est developpé en java.la probleme est comment appler l'application developpé en c quant je clique sur une bouton du menu.
J'ai réussi a basculer du c à java mais l'inverse non.C'est pourquoi je posté cette question.
Je vais essayer d'être clair !
pour faire du JNI (surtout n'hesite pas a regarder les cours Java pour les details) il faudra faire plusieurs choses :
- ta classe en c
- ta classe java qui doit appeler la methode native en c
- le header généré avec "javah -jni ..." a partir de ta classe java compilée
- le wrapper qui va utiliser le header généré
imagine que tu aies une classe en c (monCodeC)qui possède la méthode suivante :
le code java suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 DLLEXPORT const char *getMessage() { return "Mon message"; }
Le wrapper (MonWrapperJNI):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 /** * */ package com.test.jni; /** * @author Moi * */ public class TestJNI { static { System.loadLibrary("MonWrapperJNI"); } public static void main(String[] args) { TestJNI tj = new TestJNI (); System.out.println("Le message : " + tj.getMessage()); } public native String getMessage(); }
Pour répondre a ta question le wrapper va permettre de faire le lien entre ton code c et JNI.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #include <jni.h> #include <monCodeC.h> #include <com_test_jni_TestJNI.h> //normalement généré par javah JNIEXPORT jstring JNICALL Java_com_test_jni_TestJNI_getMessage(JNIEnv * env, jobject obj) { return env->NewStringUTF(getMessage()); }
Si tu as la possibilité de modifier directement le code c alors tu n'a plus besoin du wrapper car tu pourras directement mettre la methode Java_com_test_jni_TestJNI_getMessage(JNIEnv * env, jobject obj) dans ta classe c.
j'espère ca va t'aider !![]()
Il n'y a pas de problème, il n'y a que des solutions.
Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran
Mes Articles : Mon premier article est sur le language D
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Bonjour,
il est très facile de convertir à la main du C en Java (le contraire étant beaucoup plus complexe).
Le seul souci que tu pourrais rencontrer c'est les pointeurs sur des in, double, ... en paramêtre de fonctions. Une solutions nulle mais facile c'est de créer une classe PointeurInt, ... contenant juste un terme "value".
Sinon, tu peux compiler ta partie C et appeler l'éxécutable via la commande "execute". Il te faudra juste faire un fichier d'entrée/sortie pour envoyer les données au programme C puis les récupérer.
Consignes aux jeunes padawans : une image vaut 1000 mots !
- Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
- Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
-ton poste tu dois marquer quand la bonne réponse tu as obtenu.
Partager