Portage d un projet c++ de linux vers windows [Résolu]

elhajjajireda 34 Messages postés mercredi 3 juin 2009Date d'inscription 20 juin 2011 Dernière intervention - 14 avril 2011 à 18:27 - Dernière réponse : elhajjajireda 34 Messages postés mercredi 3 juin 2009Date d'inscription 20 juin 2011 Dernière intervention
- 22 avril 2011 à 17:00
j’ai des petits problèmes qui concerne le sujet de mon projet de fin d’études et qui consiste à l’optimisation d'une bibliothèque de fonctions d'extraction et de reconnaissance de points d’intérêt dans des images vidéos et évaluation des performances .cette bibliothèque est déjà développé sous Linux et l'objectif consiste en la réalisation du portage de Linux vers Windows en préservant voire en améliorant les performances temporelles.

je me demande si vous pouvez bien m’aider dans ce travail surtout que j’ai jamais fais un portage d’un OS sur un autre et que je trouve beaucoup de difficulté pour trouver des documentations sur ce type de portage.

je tiens aussi à vous dire que la bibliothèque marche bien sur Linux et donne tous les points d'intérêt nécessaire quand on l'applique sur des images , alors que sur Windows se compile avec aucun erreurs de compilation mais ne donne aucun résultats.
Afficher la suite 

10 réponses

Répondre au sujet
elhajjajireda 34 Messages postés mercredi 3 juin 2009Date d'inscription 20 juin 2011 Dernière intervention - 15 avril 2011 à 17:48
+3
Utile
je me débrouille bien en C++ , le problème que je me suis pas encore habitué avec la programmation sur un environnement Linux ,cependant je crois qu'il y a un malentendu , par ce que je compile déjà avec la console sous Linux soit avec Makefile ou bien avec des commandes comme celle que je t ai transmis ,
mais on peut pas mettre ce que tu m'a proposé sur une console Windows sauf je crois si on installe MinGw si nn il va pas connaitre le compilateur g++ ni les autres drapeaux
donc c pr cela ke je compile avec code::blocks

pour debuger pas de pb sous windows mais j ai jamais travaillé avec sous linux et je crois pas que ça va me démotiver , tant que je suis encore au debut de mon PFE et j'ai le temps pour apprendre
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de elhajjajireda
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscription 18 avril 2018 Dernière intervention - 15 avril 2011 à 18:04
+3
Utile
Code block utilise bien un binaire pour compiler ? Qu'est-ce qui t'empêche de l'utiliser en ligne de commande ?
Tu précises juste le chemin du binaire où est installé g++ (Ex bidon dans un terminal: "C:\Program Files\CodeBlock\g++ -W -Wall etc...").

gdb est vraiment excellent, mais est difficile à manier (entièrement en ligne de commande).
Tu peux essayer d'installer QtCreator (multiplateforme: dispo sous tous les OS) qui te donneras une interface graphique pour gdb, en plus d'une interface graphique pour compiler et coder.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cptpingu
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscription 18 avril 2018 Dernière intervention - 14 avril 2011 à 18:54
0
Utile
Il te faut analyser les points suivants:
- Utilises-tu des bibliothèques externes ? Si oui lesquels.
- Fais-tu des appels systèmes ? Si oui lesquels.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Commenter la réponse de cptpingu
elhajjajireda 34 Messages postés mercredi 3 juin 2009Date d'inscription 20 juin 2011 Dernière intervention - 14 avril 2011 à 20:24
0
Utile
non sur linux ils utilisaient BOOSt mais je m' en ai débarrasse
donc il y a aucun autre dépendance
Commenter la réponse de elhajjajireda
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscription 18 avril 2018 Dernière intervention - 14 avril 2011 à 22:12
0
Utile
Boost est multiplateforme, dommage...

Si tu n'as pas de dépendance, pas d'appel système, alors le souci vient forcément de ton code, pas d'un souci de portabilité. Le fait même que ça compile le prouve. Tu as donc une erreur qui aurait tout aussi bien se déclencher sous Linux.
Et là, sans voir ton code, ça va être très difficile.

Test ton programme avec:
- Valgrind
- Un maximum de flag à la compilation
- DUMA

mais ne donne aucun résultats.

C'est-à-dire ? Peux-tu être plus explicite sur ce point ?

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Commenter la réponse de cptpingu
elhajjajireda 34 Messages postés mercredi 3 juin 2009Date d'inscription 20 juin 2011 Dernière intervention - 14 avril 2011 à 22:57
0
Utile
oui ça m a trop cassé la tête aussi, ça fait une semaine que je creuse pour trouver qq choses mais rien !

le programme tourne tres bien sur LINUX et donne ts les resultats attendu ' il s agit d'une librairie qui fait l extraction des point d intérêt dans des photo de video"

alors le comportement est diffèrent sur Windows , ça compile sans erreurs , ça s exécute aussi , et ça me donne le meme fichier.exe que je genere sur linux avec

--------------------------------------------------------------------------------------
g++ -O3 -mtune=core2 -mmmx -msse -msse2 -mssse3 -Wno-strict-aliasing -o exe exemple.cc MListePI.cc MDetecteur.cc MCharImage.cc MHomographie.cc MUtils.cc MShortImage.cc MFloatImage.cc MSignedShortImage.cc MParamsIntrinseques.cc MCorrelation.cc jtmatrix.cc Matrix33.cc
---------------------------------------------------------------------------------------
mais quand je teste ce fichier avec des images sous windows , ça commence a afficher les premiers message mais ne donne aucun resultats


si vous voulez je peux vous transmettre le code pour prendre une idée
Commenter la réponse de elhajjajireda
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscription 18 avril 2018 Dernière intervention - 15 avril 2011 à 10:21
0
Utile
librairie => bibliothèque (librairie est une erreur de traduction du mot anglais "library")

Je peux jeter un coup d'oeil, mais avant de regarde le code source, j'ai besoin que tu vérifies les choses suivantes:
- g++ --version sur la machine sous Linux et sous Windows. Fais attention de ne pas avoir une vieille version de g++. La plus récente est la version 4.6
- Tu as certains flags très spécifiques à une architecture. Peux-tu compiler sans optimisations, uniquement avec: "g++ -W -Wall -pedantic -Wabi" sur les 2 machines.

Teste déjà ça. Si ça ne fonctionne pas, je regarderais la source.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Commenter la réponse de cptpingu
elhajjajireda 34 Messages postés mercredi 3 juin 2009Date d'inscription 20 juin 2011 Dernière intervention - 15 avril 2011 à 16:54
0
Utile
j'ai fais ce que vous m'avez demandé mais en fait le problème n'est plus sous Linux , je vais m'en servir juste pour comparer a chaque stade le résultat avec celle sous Windows " et là ce pose encore la question de comment faire du DEBUG sous linux "

d'autre part je sais pas comment compiler avec les flags que vous m'avez proposé , tant que je compile avec code::blocks sous windows


donc si ça vous pose pas de pb dis moi comment je peux vous transmettre le code ?
Commenter la réponse de elhajjajireda
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscription 18 avril 2018 Dernière intervention - 15 avril 2011 à 17:06
0
Utile
Tu le tapes dans un terminal...

Au lieu de:

g++ -O3 -mtune=core2 -mmmx -msse -msse2 -mssse3 -Wno-strict-aliasing -o exe exemple.cc MListePI.cc MDetecteur.cc MCharImage.cc MHomographie.cc MUtils.cc MShortImage.cc MFloatImage.cc MSignedShortImage.cc MParamsIntrinseques.cc MCorrelation.cc jtmatrix.cc Matrix33.cc


Tu mets:

g++ -W -Wall -pedantic -Wabi -o exe exemple.cc MListePI.cc MDetecteur.cc MCharImage.cc MHomographie.cc MUtils.cc MShortImage.cc MFloatImage.cc MSignedShortImage.cc MParamsIntrinseques.cc MCorrelation.cc jtmatrix.cc Matrix33.cc


On débug grâce à "gdb", je t'invite à regarder des tutoriaux sur le net.
On vérifie les fuites mémoires grâce à "valgrind".
On teste les performances avec "valgrind --tools=callgrind"
On détecte des deadlocks avec "valgrind --tools=hellgrind" (Uniquement si ton application est "multi-threadée")

Si tu n'as pas certaines bases (savoir compiler en console, savoir débugger un programme sous Linux), il y a de forte chance que ton niveau de connaissance en C++ soit assez limité. Faire un portage est une tâche souvent difficile si l'application n'a pas été pensé pour cela, et tu risques d'avoir énormément de mal à le réaliser.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Commenter la réponse de cptpingu
elhajjajireda 34 Messages postés mercredi 3 juin 2009Date d'inscription 20 juin 2011 Dernière intervention - 22 avril 2011 à 17:00
0
Utile
Bonjour
je travail toujours sur le même sujet , j ai commencé le débogage sur les 2 plateforme
et là j'ai remarqué que sur le même bloc , je n'ai pas les même valeurs sur certain objets ou bien variables , sur linux comme sur Windows.
D'autre part quand je recompile sur Windows j'obtiens chaque fois des nouveaux valeurs comme si je travail avec des nouveaux arguments ou bien des nouveaux photos
alors que sous Linux le comportement est normale et sur chaque compilation j'obtiens les même valeur.

Ce que j'ai pu remarqué aussi , c'est surtout les variables en hexadécimale qui posent des problèmes et ce que je crois encore pire:sous linux ils sont sur 32 bit(8 caractères hexa) et sous windows ils sont sur 24 bit

si le vous plait , est qu'il y quelqu'un qui a une explication

NB: j'ai enregistré les résultats du debogage sur les deux système pour qu'on puisse mieux comparer , mais je ne sais pas comment faire pour l'importer sur ce forum ?
Commenter la réponse de elhajjajireda

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.