|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() mécatronique Inscription : mars 2012 Messages : 7 ![]() |
Bonjour,
J'aurai besoin de votre aide SVP ! Je suis en stage et je dois corriger des erreurs sur un logiciel à partir des sources. Sauf que les programmes ne sont pas commentés et pas d'architecture ni de cahier de développement du logiciel. Pourriez-vous m'indiquer une démarche pour comprendre l'architecture générale afin de compiler l'ensemble. Merci d'avance de votre aide. Je suis à votre disposition pour tout renseignement qui vous permettra de mieux saisir ma problématique. Cordialement |
|
|
00
|
|
|
#2 |
|
Membre expérimenté
![]() Ingénieur développement logiciels Inscription : mars 2009 Messages : 333 ![]() |
Bonjour,
Ton logiciel est programmé dans quel langage? C'est quoi? Une application web, un programme windows avec interface graphique? Un élément d'une chaîne de traitement?... |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() mécatronique Inscription : mars 2012 Messages : 7 ![]() |
Bonjour,
en fait c'est un logiciel de gestion de suspension mécanique, il est composé de deux parties une partie moteur de calcul programmé en C++ et une partie interface graphique développé en Java. le DLL pour le moteur de calcul a été généré mais j'aimerai d'abord recompiler le tout, mais avant comprendre son architecture. |
|
|
00
|
|
|
#4 |
|
Membre expérimenté
![]() Ingénieur développement logiciels Inscription : mars 2009 Messages : 333 ![]() |
Re,
Tu as peut-être une communication entre JAVA et C++ reposant sur une JNI (ta dll). Tu vois des "native" dans les classes java? Pour l'aider à décortiquer le moteur de rendu, tu peux générer la documentation automatique du code à l'aide de Doxygen. Si le moteur repose sur des classes, tu verras peut-être sortir les grandes lignes. Idem pour la javadoc de l'interface graphique. Sinon, tu peux partir des appels JAVA->C++ pour repérer la partie "haute" du moteur de calcul. A partir de cette interface entre java et c++, tu peux descendre dans le cœur du moteur de calcul, repérer les différents composants et les différents appels (prépare ton criterium, tu risques de gribouiller). Pour ce qui est de la compilation du moteur de rendu, ça dépend des techniques utilisées (projet spécifique à un IDE, configure/make, cmake, ou encore rien : tes collègues lancent les lignes de commande qui vont bien)... |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() mécatronique Inscription : mars 2012 Messages : 7 ![]() |
Re,
J'ai essayé de faire ce que tu ma dis, mais l'instant j'ai des messages d'erreurs. La démarche que j'ai suivie est : - D'abord je crée un nouveau projet où j'importe tous les fichiers .java (partie interface graphique) - Ensuite j'importe une librairie mathématique (contenant des outils maths, ce sont des fichiers .cpp et .h) - Ensuite j'essaie de compiler mais ça ne marche pas, je sais peut être qu'il faudrait que j'importe le fichier (contenant la partie moteur de calcul) mais sauf que je ne sais pas comment procéder l'erreur que j'ai est du genre : utilisation de classes non définies dans le mes .java et donc il me propose de créer ces classes, sauf que je suis sûr qu'elles ont été créées. Merci de ton aide ! |
|
|
00
|
|
|
#6 |
|
Membre expérimenté
![]() Ingénieur développement logiciels Inscription : mars 2009 Messages : 333 ![]() |
Bonjour,
J'ai du mal à voir ce que tu fais au juste. Tu compiles bien tes .cpp et .h en JNI? Tu ne les ajoutes pas au projet java? |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() mécatronique Inscription : mars 2012 Messages : 7 ![]() |
Bonjour,
En gros je ne vois pas comment il faut faire le lien entre la partie moteur de calcul et la partie interface Java. Si tu pourrais me dire les étapes que je devrais suivre pour réussir à avoir un projet avec toutes les librairies et sources pour qu'il n y ait pas des erreurs de déclaration, ça me permettra de mieux comprendre. Pour cela je te mets ici l'ensemble des sources que j'ai : - un fichier contenant la partie "Develloppement" composé de : 1. DataTool : Bibliothèque de lecture/écriture des fichier 2. Tool : Bibliothèque de géométries utilisés 3. OrgaTool : Bibliothèque de modèles d'organes 4. Dev : moteur (ensemble des fichiers C++ et .h, récupération des données et transformation en java...), ensuite interface (l'ensemble des fichiers .java) et un fichier .bat - un fichier contenant un .dll, un .exp et un .lib - une librairie contenant MathTool (une bibliothèque mathématique) et une autre bibliothèque de base. Voilà tout ce dont j'ai et à partir de ça j'aimerai d'abord savoir une démarche pour arriver à compiler l'ensemble. Cordialement, |
|
|
00
|
|
|
#8 | |||
|
Membre expérimenté
![]() Ingénieur développement logiciels Inscription : mars 2009 Messages : 333 ![]() |
Citation:
- les JNI, écrites à la main - les JNI, dont le code est généré par SWIG - JNA (je ne connais pas) - Les sockets - Les fichiers d'échanges - ... Citation:
Je t'avoue que j'ai du mal à voir ce qui est utilisé. Est-ce que tu as des erreurs de compilation en java ou en C++? Citation:
- Compiler les bibliothèques C++, avec un compilateur C++. Tu prendras ainsi en main la chaine de compilation C++. - Compiler le code de l'interface java (si la techno utilisée est JNI pour l'interfacage) - Compiler le code java, avec un compilateur java Essaye de me coller quelques erreurs de compilation que tu rencontres au pire que je me fasse une idée (les premières)... ++ |
|||
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() mécatronique Inscription : mars 2012 Messages : 7 ![]() |
Bonjour,
Je suis pour l'instant à l'étape compilation moteur de calcul. J'utilise Visual C ++, j'ai créé un projet à partir de fichiers sources existant (mes .cpp et mes .h), ensuite j'ai rajouté à la CLASSPATH la librairie logiciel.dll, logiciel.lib et logiciel.exp. Mais ce que je ne comprends pas, c'est le compilateur m'indique des indique des message d'erreurs liés au fichiers header .h, il me dit qu'il ne l'ai trouve pas alors que je les ai rajouter à mon projet. Voici les erreurs que j'ai Error 1 error C1083: Cannot open include file: 'Vehicule.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Vehicule.cpp 7 1 testG Error 2 error C1083: Cannot open include file: 'Triangle.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Triangle.cpp 7 1 testG Error 3 error C1083: Cannot open include file: 'Transmission.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Transmission.cpp 7 1 testG Error 4 error C1083: Cannot open include file: 'Statique.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Statique.cpp 7 1 testG Error 5 error C1083: Cannot open include file: 'SolvSusp2.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\SolvSusp2.cpp 5 1 testG Error 6 error C1083: Cannot open include file: 'SolvSusp.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\SolvSusp.cpp 5 1 testG Error 7 error C1083: Cannot open include file: 'SolvFix.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\SolvFix.cpp 6 1 testG Error 8 error C1083: Cannot open include file: 'SolvCin.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\SolvCin.cpp 5 1 testG Error 9 error C1083: Cannot open include file: 'SensibGeom.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\SensibGeom.cpp 5 1 testG Error 10 error C1083: Cannot open include file: 'Roue.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Roue.cpp 7 1 testG Error 11 error C1083: Cannot open include file: 'Repere.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Repere.cpp 7 1 testG Error 12 error C1083: Cannot open include file: 'RepartFixation.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\RepartFixation.cpp 5 1 testG Error 13 error C1083: Cannot open include file: 'Reglages.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Reglages.cpp 5 1 testG Error 14 error C1083: Cannot open include file: 'RapGeom.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\RapGeom.cpp 7 1 testG Error 15 error C1083: Cannot open include file: 'Poussant.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Poussant.cpp 7 1 testG Error 16 error C1083: Cannot open include file: 'PneuMz.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\PneuMz.cpp 5 1 testG Error 17 error C1083: Cannot open include file: 'MateriauPli.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\MateriauPli.cpp 5 1 testG Error 18 error C1083: Cannot open include file: 'Materiau.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Materiau.cpp 5 1 testG Error 19 error C1083: Cannot open include file: 'Lvdt.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Lvdt.cpp 7 1 testG Error 20 error C1083: Cannot open include file: 'JEpure.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\JEpure.cpp 6 1 testG Error 21 error C1083: Cannot open include file: 'Geometrie.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Geometrie.cpp 7 1 testG Error 22 error C1083: Cannot open include file: 'Geolog.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Geolog.cpp 5 1 testG Error 23 error C1083: Cannot open include file: 'Epure.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Epure.cpp 7 1 testG Error 24 error C1083: Cannot open include file: 'DeformBras.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\DeformBras.cpp 5 1 testG Error 25 error C1083: Cannot open include file: 'Debattements.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Debattements.cpp 7 1 testG Error 26 error C1083: Cannot open include file: 'Conv.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Conv.cpp 5 1 testG Error 27 error C1083: Cannot open include file: 'Chassis.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Chassis.cpp 7 1 testG Error 28 error C1083: Cannot open include file: 'Central.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Central.cpp 5 1 testG Error 29 error C1083: Cannot open include file: 'CasEffort.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\CasEffort.cpp 7 1 testG Error 31 error C1083: Cannot open include file: 'BielTor.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\BielTor.cpp 7 1 testG Error 32 error C1083: Cannot open include file: 'BielPince.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\BielPince.cpp 5 1 testG Error 30 error C1083: Cannot open include file: 'Biellette.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Biellette.cpp 7 1 testG Error 33 error C1083: Cannot open include file: 'BielCen.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\BielCen.cpp 7 1 testG Error 34 error C1083: Cannot open include file: 'BielAnt.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\BielAnt.cpp 7 1 testG Error 35 error C1083: Cannot open include file: 'Basculeur.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Basculeur.cpp 7 1 testG Error 36 error C1083: Cannot open include file: 'BarTorsion.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\BarTorsion.cpp 6 1 testG Error 37 error C1083: Cannot open include file: 'Antiroulis.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Antiroulis.cpp 6 1 testG Error 38 error C1083: Cannot open include file: 'Amortisseur.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\Amortisseur.cpp 7 1 testG Error 39 error C1083: Cannot open include file: 'AmoLateral.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\AmoLateral.cpp 5 1 testG Error 40 error C1083: Cannot open include file: 'AmoCentral.h': No such file or directory C:\Users\serigne\Documents\Rapport de Stage 2012\geolog\AmoCentral.cpp 7 1 testG |
|
|
00
|
|
|
#10 |
|
Membre expérimenté
![]() Ingénieur développement logiciels Inscription : mars 2009 Messages : 333 ![]() |
Salut,
Ok. Ca veut dire que tu n'as pas fournis les bons répertoires aux compilateurs, en l’occurrence, ceux des .h. Il cherche "Vehicule.h" dans une liste de répertoire système + utilisateur, là, il ne trouve pas de fichier dans les répertoires. Il faut que tu ajoutes le répertoire contenant "Vehicule.h" aux répertoires de recherche des headers en faisant : - clic droit sur le projet : Propriétés - Propriétés de configuration -- C/C++ ---- Général ------ Autre répertoire d'include <= ajout de ton répertoire. Mais, honnêtement, c'est une erreur de grand débutant en C++. Si tu ne connais rien à la compilation C++, tu risques de ramer en t'attaquant directement à la compilation d'un gros projet... Je te conseillerais de commencer par des choses plus simple que ces gros projets. - Faire un programme en console (projet MaConsole) - Faire une lib avec une pauvre fonction (projet MaLib), dans la même solution - Ajouter un appel à la fonction de MaLib dans MaConsole Tu as personnes de physique pour t'aider avec ces bases là? ++ |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() mécatronique Inscription : mars 2012 Messages : 7 ![]() |
Bonjour,
je reviens vous demander encore de l'aide SVP, j'ai des erreurs de compilation toujours, est ce que vous auriez une idée de ce que ça peut être, je ne comprends pas trop ce que cela veut dire. Merci d'avance. 1>Main.obj : error LNK2019: unresolved external symbol "public: __thiscall PGPString::~PGPString(void)" (??1PGPString@@QAE@XZ) referenced in function __catch$_main$0 1>Main.obj : error LNK2019: unresolved external symbol "public: __thiscall PGPString: 1>Main.obj : error LNK2019: unresolved external symbol "public: __thiscall PGPString: 1>Main.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall DataGm::~DataGm(void)" (??1DataGm@@UAE@XZ) referenced in function _main 1>Main.obj : error LNK2019: unresolved external symbol "public: __thiscall DataGm: 1>Main.obj : error LNK2019: unresolved external symbol "public: class PGPString & __thiscall PGPString::operator=(char const *)" (??4PGPString@@QAEAAV0@PBD@Z) referenced in function _main 1>.\..\nomLogiciel\Debug/Test.exe : fatal error LNK1120: 6 unresolved externals |
|
|
00
|
|
|
#12 |
|
Membre expérimenté
![]() Ingénieur développement logiciels Inscription : mars 2009 Messages : 333 ![]() |
Bonjour,
Bien, tu en es aux erreurs de link (error LNK*), tu tiens le bon bout. Si la classe PGPString est dans une autre bibliothèque, il manque le link sur cette bibliothèque. Si tes différents projets sont dans la même solution, tu dois ajouter une dépendance entre les projets. Clic droit sur le projet posant problème, "dépendances du projet" et coche le projet contenant PGPString. |
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() mécatronique Inscription : mars 2012 Messages : 7 ![]() |
Bonjour,
Merci encore de votre aide, la compilation est bonne maintenant. J'ai ainsi obtenu trois fichiers (nomLogiciel.exp, nomLogiciel.lib et nomLogiciel.dll). J'aurais certainement encore d'un coup de main, j'ai pu comprendre réellement que le logiciel lui-même est écrit en Java et qu'il fait juste appel à la librairie créée avant. Pourriez-vous m'indiquer comment cet appel peut se faire (quel librairie dois-je importer, j'imagine que le chargement se fait avec Load.Library(), mais je comprends pas trop). Merci |
|
|
00
|
|
|
#14 | ||||||||
|
Membre expérimenté
![]() Ingénieur développement logiciels Inscription : mars 2009 Messages : 333 ![]() |
Bonsoir,
Alors, en bref, tu as une classe Java avec une fonction native "beep" qui appel une fonction C monpackage.Beeper Code :
monpackage_Beeper.h Code :
Tu implémentes Java_monpackage_Beeper_beep dans un cpp : monpackage_Beeper.cpp Code :
Code :
gcc -Wall -Wl,--kill-at -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" -shared -o monpackage.dll monpackage_Beeper.cpp Code :
Attention : - La DLL doit pouvoir être chargée (PATH ou répertoire d'exécution), sinon, erreur de chargement du module - Les options de compilation doivent être les bonnes, sinon, unsatisfied link error (il charge la DLL, mais ne trouve pas la fonction qui n'a pas le nom attendu dans la DLL) |
||||||||
|
|
10
|
Copyright © 2000-2013 - www.developpez.com