Exactement de la même façon, avec Code::blocks
Exactement de la même façon, avec Code::blocks
Si vous ne trouvez plus rien, cherchez autre chose...
Vous trouverez ici des tutoriels OpenGL moderne.
Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).
si le vous plait est ce que vous n'avez pas des tutoriels pour moi sur gdb ou bien comment travailler avec debugger sur QtCreator , par ce que apparemment sont les outils les plus recommandé pour du debug sous linux
autre question est ce que l'architecture de la mémoire est différente que celle de Windows ( c est difficile à expliquer mais je veux dire pour les registre ,les octets du rang plus fort sont pas les plus faible sur win et vise versa ""
Pour le debug avec QtCreator je ne peux pas t'aider, par contre pour gdb Google est ton ami ^^ (je suis tombé sur ça à ma première recherche http://brouits.free.fr/doc/gdb_howto.html).
Au niveau de l'architecture, c'est essentiellement le système qui va avoir ces différences, pas l'os donc il faut d'abord que tu te renseignes sur l'endianness des 2 machines qui te servent pour tes tests.
Si vous ne trouvez plus rien, cherchez autre chose...
Vous trouverez ici des tutoriels OpenGL moderne.
Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).
Tu peux installer code:block sous linux aussi, ainsi tu pourras comparer plus aisément le comportement sous windows et linux
oui je l'ai déjà installé , au debut il fonctionnait bien mais là je n'arrive même pas à le lancer , il démarre et après il se coupe a chaque fois ,
je doute si c est a cause de la version virtuel de Ubunto , mais bon comme j'ai dit au debut il marchait bien
Perso, je le fais tourner sous vmware Ubuntu sans aucun soucie, mais je n'utilise pas la version svn 10.0 mais l'ancienne 8.02 je crois.
Mais à priori, la virtualisation n'a rien à voir là dedans.
As-tu réglé le compilateur pour que le niveau d'avertissement soit maximal ?
Non , comment faire ?
ajoute -Wall à ta ligne de compilation dans le makefile
Si vous ne trouvez plus rien, cherchez autre chose...
Vous trouverez ici des tutoriels OpenGL moderne.
Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).
Bonjour
je travail toujours sur le même sujet de portage , 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 ?
j'ai creusé un peu dans le code et j'ai trouvé un fichier qui a utilisé des instructions spécifiques à l'architecture comme vous l'avez signalé .
je donne juste un peti exemple par ce qu'il y en a beaucoup et que j'ai rien compris ce qu'il veut faire
-je n'ai pas compris aussi votre question "La gestion des noms des fichiers est différentes entre windows et linux"
-d'autre parts la taille de certains variables est différente sur les 2 systemes
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
24
25
26
27
28
29
30
31
32
33 #ifdef ARCH_X86 static mmx_t mmx_ffffffff={0xffffffffffffffffull}; movq_m2r (mmx_ffffffff,mm0); movq_m2r (mmx_ffffffff,mm1); switch (BorderSize) { case 1: psllq_i2r (8,mm0); psrlq_i2r (8,mm1); break; case 2: psllq_i2r (16,mm0); psrlq_i2r (16,mm1); break; case 3: psllq_i2r (24,mm0); psrlq_i2r (24,mm1); break; case 4: psllq_i2r (32,mm0); psrlq_i2r (32,mm1); break; case 5: psllq_i2r (40,mm0); psrlq_i2r (40,mm1); break; case 6: psllq_i2r (48,mm0); psrlq_i2r (48,mm1); break; case 7: psllq_i2r (56,mm0); psrlq_i2r (56,mm1); break; }; unsigned char *OutLeft= yuv, *OutRight= yuv+x__-8; for (int yy= y__; yy; yy--) { movq_m2r (*OutLeft,mm2); movq_m2r (*OutRight,mm3); pand_r2r (mm0,mm2); pand_r2r (mm1,mm3); #ifdef __WITH_MOVNTQ__ movntq_r2m (mm2,*OutLeft); movntq_r2m (mm3,*OutRight); #else movq_r2m (mm2,*OutLeft); movq_r2m (mm3,*OutRight); #endif OutLeft+= x__; OutRight+= x__; }; Memms(); #endif
d'autre part pour mieux comprendre je vais essayer de faire un petit exemple
[code]
#include "MCharImage.h"
#include "MDetecteur.h"
#include "MListePI.h"
//#include "MListeCouples.h"
#include "MUtils.h"
using namespace std;
using namespace local_vis_eric;
int main (int argc,char** argv)
{
if (argc==3)
{
//Ouverture des images
cout << "ouverture des images" << endl;
MCharImage Image1,Image2; //raz
Image1.Load(argv[1]);
................
}
après voila le résultat que j'ai eu pour le même objet sur les 2 plateformes :
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 int IsColored= 0; //ifstream Image(PpmOrPgm); // créer un flot d'entrée associé à un fichier ifstream Image(PpmOrPgm,ios::in); // ajouté if (Image.bad()) //** test la valeur de badbit pour savoir si le flot est dans un état irrécupérable return 0; char C; //** Image.get() extrait un caractère du flot d'entrée et en renvoie la valeur (sous forme d'un entier) ; fournit EOF en cas de fin de fichier while ((C = Image.get()) == '#') { do C = Image.get(); while (C != '\n'); }; Image.putback(C); //** Le caractère passé en paramètre de cette fonction est ajouté à la fin du flux fonctionne correctement, le caractère réinséré doit être le dernier caractère lu, char Tmp[256]; Image.get(Tmp, 256, '\n'); //**extrait 255 caractères du flot et les place à l'adresse Tmp (le tampon). La lecture s'arrête éventuellement après le délimiteur s'il est rencontré. Image.get(); if (!strcmp(Tmp, "P5")) IsColored= 0; else if (!strcmp(Tmp, "P6") || !strcmp(Tmp, "P3")) IsColored= 1; else return 0; while ((C = Image.get()) == '#') { do C = Image.get(); while (C != '\n'); }; Image.putback(C); int xx, yy, zz; Image >> xx >> yy >> zz; if ((xx <= 0) || (yy <= 0) || (zz!= 255 && zz!= 254)) return 0; SetSize(xx,yy); Image.get(); int L= x__*y__; // X__=xx y__=yy if (!IsColored) { Image.read((char*)yuv, L); } else if (!strcmp(Tmp, "P6")) { // color binary char* Tmp2= new char[3*L]; Image.read(Tmp2, 3*L); for (int i= 0; i< L; i++) yuv[i]= Tmp2[3*i+1]; delete[] Tmp2; } else if (!strcmp(Tmp, "P3")) { // color ascii int R, G, B; for (int i= 0; i< L; i++) { Image >> R >> G >> B; yuv[i]= G; }; }; return 1; }
-sous Windows
- sous Linux:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 x__=1024 y__=768 yuv = 0x2e0030 "\f\f\r\016\r\017\v\016\016\r\r\016\017\020\016\020\020\020\020\021\022\022\022\024\025\024\024\025\025\025\026\026\027\026\027\027\027\027\030\030\031\032\031"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 (gdb) print Image1 $1 = {x__ = 1024, y__ = 768, yuv = 0xb7f2b010 "\f\f\r\016\r\017\v\016\016\r\r\016\017\020\016\020\020\020\020\021\022\022\022\024\025\024\024\025\025\025\026\026\027\026\027\027\027\027\030\030\031\032\031\032\032\033\033\033\033\034\034\034\034\034\033\036\034\035\036\037\037\037\037 \037\037\036\037\036\037\036\036 \037\037\037\036\036\"#\"!$%#\"\"!#\"\"\"##\"\"$%&\"! \037 \"\"\..., ReadOnly = false}
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager