Accueil > Forum > > > > Erreurs de compilations bizarres avec Visual C++ 6
Erreurs de compilations bizarres avec Visual C++ 6
vendredi 23 avril 2004 à 09:53:58 |
Erreurs de compilations bizarres avec Visual C++ 6

VTS_35
|
Bonjour, G encore des problèmes de compilation avec mon programme. Je me suis rendu compte que le programme allait devenir balaise, alors j'ai décidé de le modulariser afin que ce soit plus clair. Sauf qu'évidemment, C là que G eu toutes sortes d'erreurs! Bon, je vous explique un peu mon programme: pour l'instant G deux gros fichiers: un qui liste des reépertoires, un qui effectue des lectures d'entetes sur des fichiers images (infrarouges). voici mes fichiers: const.h (y'a encore rien dedans, C juste pour lafiorme:) ) #ifndef CONST_H #define CONST_H
#endif
|
types.h #ifndef STRUCT_H #define STRUCT_H
#include "const.h"
//structures de gestion de la date et de l'heure. struct Date{ short Year; int Day; int Month; };
struct Time{ int Minute; int Hour; int Hundred; int Second; };
//déclaration des types typedef unsigned char byte; //type 'octet'
typedef struct { struct Date date; struct Time heure; char camera[20]; char lentille[20]; char filtre[20]; char calibration[13]; float bandeInf; //intervalle de la bande infrarouge float bandeSup; //en ùm float temp; //température de la caméra int hauteur; int largeur; } Entete;
#endif
|
global.h #ifndef GLOBAL_H #define GLOBAL_H
#include "types.h"
extern Entete enteteL; extern Entete enteteR;
extern char Indentation[256];
#endif
|
image.h #ifndef IMAGE_H #define IMAGE_H
#include <stdio.h> //FILE* ...
//prototypes des fonctions void skip(FILE*, int); void lireFichier(FILE*); void recopierEntete(FILE*, FILE*); void afficheDonnees(Entete); void creerListe(FILE*);
#endif
|
et dossier.h #ifndef DOSSIER_H #define DOSSIER_H
//prototypes des fonctions void Save_En_Tete_Fichier(FILE*, char *); void ScanContenuDossiers(char*, FILE*)
#endif
|
et maintenant les sources: dossier.cpp #include <windows.h> //manip fichiers #include <conio.h> #include <stdio.h> //FILE* ...
#include "global.h" #include "dossier.h"
// creation de la liste des répertoires et fichiers // void Save_En_Tete_Fichier(FILE* f, char *Chemin){ char *Texte; // on alloue de la memoire pour enregistrer deja les informations qui sont en en-tete du fichier Texte = (char*) malloc((90+strlen(Chemin))*sizeof(char)+1); // le +1 sert pour le '\0' à la fin de la chaine car strlen() ne le compte pas. // l'ensemble du texte ecrit en dessous fait 90 caracteres // on copie l'en-tete dans Texte strcpy(Texte, "Repertoire en cours : "); strcat(Texte, Chemin); strcat(Texte, "\n"); strcat(Texte, "--------------------------------------"); strcat(Texte, "\n\n"); strcat(Texte, "Fichiers présents : \n\n");
// on enregistre les données dans notre fichier fwrite(Texte, sizeof(char), strlen(Texte), f);
// on libère la mémoire free(Texte); }
// scanne tous les dossiers et sous-dossiers // void ScanContenuDossiers(char *CurrentDir, FILE *f) { char Chemin[MAX_PATH]; WIN32_FIND_DATA wData; HANDLE listing;
// on rajoute *.* à la fin de l'adresse pour FindFirstFile() sprintf (Chemin, "%s*.*", CurrentDir); listing = FindFirstFile(Chemin, &wData); // on enleve le *.* à la fin de l'adresse sprintf (Chemin, "%s", CurrentDir);
if (listing != INVALID_HANDLE_VALUE) { do { if ((strcmp(wData.cFileName, ".."))&&((strcmp(wData.cFileName, ".")))) { if (wData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { // puisque c'est un repertoire, on recupere la nouvelle adresse, et on va rentrer dedans... sprintf(Chemin, "%s%s/", CurrentDir, wData.cFileName); // avant, on stoque le nom du repertoire dans notre "fichier de listing" (fichier créé par notre programme) fprintf(f, "%s+ %s\n", Indentation,wData.cFileName); // on indente (car on va rentrer dans un repertoire) strcat(Indentation, " | "); // on rappelle la fonction pour qu'elle s'execute dans le repertoire (recurence) ScanContenuDossiers(Chemin, f); // on enleve l'indentation puisque on ressort du repertoire Indentation[strlen(Indentation)-4] = '\0'; // reviens un repertoire en arrière int j = strlen(Chemin)-2; while (j>0) { if (Chemin[j] == '/') { Chemin[j+1] = '\0'; break; } j--; } } else // si c'est pas un dossier, c'est un fichier... if (tolower(wData.cFileName[strlen(wData.cFileName)-3]) == 'p' && tolower(wData.cFileName[strlen(wData.cFileName)-2]) == 't'){ //si c'est un fichier IR fprintf(f, "%s- %s\n", Indentation,wData.cFileName); // on enregistre le nom du fichier } } }while (FindNextFile(listing, &wData)); } FindClose(listing); }
|
image.cpp ////////////////////////////////////////////////////////////////////////////// // image.cpp -> fonctions permettant le traitement des fichiers infrarouges // ////////////////////////////////////////////////////////////////////////////// #include <iostream> //namespace std #include <iomanip> //setw, setfill...
using namespace std; //pour les cout, endl...
#include "global.h" #include "types.h" #include "image.h"
// fonction permettant de passer des champs de données // void skip(FILE* f, int nboctets){ for (int i = 0; i < nboctets; i++){ fgetc(f); } }
// fonction de lecture des entêtes des fichiers infrarouges // void lireFichier(FILE* fe){ skip(fe,35); //0 fread(&enteteL.date.Year, sizeof(unsigned short),1,fe); //35 fread(&enteteL.date.Day, sizeof(byte),1,fe); //37 fread(&enteteL.date.Month, sizeof(byte),1,fe); //38 fread(&enteteL.heure.Minute, sizeof(byte),1,fe); //39 fread(&enteteL.heure.Hour, sizeof(byte),1,fe); //40 fread(&enteteL.heure.Hundred, sizeof(byte),1,fe); //41 fread(&enteteL.heure.Second, sizeof(byte),1,fe); //42 skip(fe,1); //43 fread(&enteteL.camera, sizeof(byte),20,fe); //44 fread(&enteteL.lentille, sizeof(byte),20,fe); //64 fread(&enteteL.filtre, sizeof(byte),20,fe); //84 skip(fe,20); //104 fread(&enteteL.calibration, sizeof(byte),13,fe); //124 skip(fe,51); //137 fread(&enteteL.bandeInf, sizeof(float),1,fe); //188 fread(&enteteL.bandeSup, sizeof(float),1,fe); //192 skip(fe,16);//acces à la valeur housing temp dans un 'reservedPTR[49]' //196 fread(&enteteL.temp, sizeof(double),1,fe); //212 enteteL.temp -=(float) 273.15; //conversion °K en °C //220 skip(fe,157); //acces à 'Column' -> largeur image //377 fread(&enteteL.largeur, sizeof (short int),1,fe); fread(&enteteL.hauteur, sizeof (short int),1,fe); }
// fonction de recopiage d'entête du fichier fe vers le fichier fs // //il n'y a plus qu'a rajouter l'image et le fichier PTM est créé! ;) void recopierEntete(FILE* fe, FILE* fs){ byte tmp[3072]; fseek(fe,0L,SEEK_SET); //on se positionne en début de fichier fread(&tmp, sizeof(byte),3072,fe); //on lit 2048(mainheader) + 1024(1st frameheader) de fe dans tmp fwrite(&tmp, sizeof(tmp),1,fs); }
// fonction d'affichage des données de l'entête // void afficheDonnees(Entete ent){ //FILE* fe =fopen("test.txt", "w+b"); //affichage dans un fichier //dup2(fe,0); cout << "[ Affichage des donnees ]" << endl; cout << left << setw(31) << setfill('-') << '-' << endl << setfill(' '); cout << left << setw(15) << "Date" << ": " << setfill ('0') << right << setw(2) << ent.date.Day << '/' << right << setw(2) << ent.date.Month << '/' << ent.date.Year << endl << setfill(' '); cout << left << setw(15) << "Heure" << ": " << setfill ('0') << right << setw(2) << ent.heure.Hour << ':' << right << setw(2) << ent.heure.Minute << ':' << ent.heure.Second << '.' << ent.heure.Hundred << endl << setfill(' '); cout << left << setw(15) << "Camera" << ": " << ent.camera << endl; cout << left << setw(15) << "Lentille" << ": " << ent.lentille << endl; cout << left << setw(15) << "Filtre" << ": " << ent.filtre << endl; cout << left << setw(15) << "Temperature" << ": " << setprecision(3) << ent.temp << " C" << endl; cout << left << setw(15) << "Bande IR" << ": " << ent.bandeInf << '-' << ent.bandeSup << " um" << endl; cout << left << setw(15) << "Dimensions" << ": " << ent.largeur <<'x' << ent.hauteur << endl; cout << left << setw(15) << "Calibration" << ": "; if (atoi(ent.calibration) != 0){ cout << ent.calibration << endl; } else { cout << "n/a" << endl; }
cout << left << setw(31) << setfill('-') << '-' << endl << setfill(' '); cout << "[ Fin du traitement ]" << endl; }
// fonction générant une liste des fichiers IR // void creerListe(FILE* fe){ fprintf(fe,"%d/%d/%d;",enteteL.date.Day,enteteL.date.Month,enteteL.date.Year); fprintf(fe,"%d:%d:%d.%d;",enteteL.heure.Hour,enteteL.heure.Minute,enteteL.heure.Second,enteteL.heure.Hundred); fprintf(fe,"%dx%d;",enteteL.largeur, enteteL.hauteur); fprintf(fe,"%s;",enteteL.camera); fprintf(fe,"%s;",enteteL.lentille); fprintf(fe,"%s;",enteteL.filtre); fprintf(fe,"%f;",enteteL.temp); fprintf(fe,"%s\n",enteteL.calibration);
}
|
et main.cpp #include <stdio.h> //FILE* ... #include <iostream>
#include "global.h" #include "main.h" #include "dossier.h" #include "image.h"
using namespace std; //pour les cout, endl...
int main(){ char nomfic_R[13] = "11_14_46.pt2"; char nomfic_W[13] = "test.ptm";
string repertoire = "H:\\images\\*.*"; FILE* fichier = fopen(nomfic_R, "r+b"); FILE* fichier2 = fopen(nomfic_W, "w+b"); ////////////////// Travail sur les répertoires FILE *f; char Dir_File[_MAX_PATH]; //variables d'environnement char Chemin[_MAX_DIR];
printf("\nTaper l'adresse du repertoire a scanner:\n\n"); printf("par exemple : \"H:\\\\images\\\""); printf("\nChemin: "); gets(Chemin); /* printf("\n\nTaper le nom du fichier dans lequel sera enregistre les informations :\n\n"); printf("\nNom: "); gets(Dir_File); */ strcpy(Dir_File, "liste.txt");
f = fopen(Dir_File,"wt"); if (f == NULL) { printf("Erreur lors de l'ouverture du fichier"); return 0; } else { Save_En_Tete_Fichier(f, Chemin); //printf("Veuillez Patienter ...\n"); ScanContenuDossiers(Chemin, f); fclose(f); printf("Operation reussie !\n\n"); } ///////////////////
/////////////////// Travail sur les fichiers infrarouges //lecture lireFichier(fichier); //recopiage d'entete recopierEntete(fichier, fichier2); fclose(fichier); fclose(fichier2); return 0; }
|
sans oublier main.h ^^ #ifndef MAIN_H #define MAIN_H
#include "types.h"
int main (void);
#endif
|
Voilà, bon, C juste pour la forme qu'il y a certains modules, mais si ça marche maintenant, ce sera mieux pour la suite! =) en gros, il me génère des erreurs du style: error C2143:syntax error : missing ';' before 'PCH creation point' dans dossier.cpp et warning C4518: 'void': storage-class or type specifier(s) unexpected here; ignored dans image.h Je suppose que G mal défini une structure ou que j'inclus pas le bon fichier, mais je suis dessus depuis hier midi et ça commence à me saouler... Je C que C un post long et po facile à comprendre, mais s'il vous plait: AIDEZ MOI!!! 
|
|
vendredi 23 avril 2004 à 12:48:04 |
Re : Erreurs de compilations bizarres avec Visual C++ 6

theneoiceman
|
une solution a ton probleme deja : dans image.h tu utilises ta structure Entete dans une de tes fonctions or cette structure n'est pas conue par le compilateur sauf si tu inclus "types.h". Ca fera deja une erreur de reglée. Après si je trouve une autre erreur je te tiens au courant. Voila... ++
|
|
vendredi 23 avril 2004 à 12:53:57 |
Re : Erreurs de compilations bizarres avec Visual C++ 6

VTS_35
|
Salut theneoiceman. G déjà essayé, mais ça n'a pas résolu de problèmes, alors je ne l'ai pas ajouté dans le code.
Je te remercie de te pencher sur mon problème, t'as certainement pas que ça à faire! lol Bon courage! Hésites pas si y'a qqch que tu comprend pas, envoie un post, je répond dans les 5min si je suis pas OQP (en stage!)
Encore merci!
++
|
|
vendredi 23 avril 2004 à 13:10:43 |
Re : Erreurs de compilations bizarres avec Visual C++ 6

theneoiceman
|
je t'ai trouvé une erreur sure : dans ton "dosier.h" tu as vu qu'il te manquait le point virgule à la fin de ta declaration de "void ScanContenuDossiers(char*, FILE)". Rajoute deja le ";" et ca ira un peu mieux. Voila je continue mon enquete. :-) neo
|
|
vendredi 23 avril 2004 à 13:20:21 |
Re : Erreurs de compilations bizarres avec Visual C++ 6

VTS_35
|
C bon Neo! Tu peux arreter! raah! Je l'avais pas vu celui là! Parfois, C vrai qu'un regard extérieur sur le code permet de déceler les erreurs plus facilement! Raaah.... Tu m'as sauvé la vie! Je t'aime!!!  J'te remercie encore! T'es mon sauveur! lol Bon, je V continuer de développer.. Si t'as un problème, et que je peux t'aider, ce dont je doute fort, mais on sait jamais, hésites pas! lol Merci!
|
|
jeudi 11 novembre 2010 à 06:56:53 |
Re : Erreurs de compilations bizarres avec Visual C++ 6

venousto
|
je suis debutant et j'ai un probleme
je sais pas comment on fait pour organiser
des fichier de variable
et de fonction sous devc++
si une bonne ames veut bien etre sympa
je remercie d'avance ce site genial
|
|
Cette discussion est classée dans : fichier, code, file, include, char
Répondre à ce message
Sujets en rapport avec ce message
Petit probleme de code en C sur Linux !! [ par UncleShu ]
Je voudrais créer un fichier dans le réperoire personnel d'un utilisateur mais mon code ne marche pas !!#include #include #include #define DIR $HOM
Problème de lecture [ par Hades53 ]
Voila, j'ai fait un code pour lire des fichiers qui marche, mais il y a un petit problème avec la dernière ligne du fichier qu'on veut lire:si la dern
#include circulaires [ par abubu38 ]
Salut, J'ai un gros probleme de compilation au niveau des .h :fichier f1.h : #include f2.h class A { // définition nécéssitant la classe
Erreur DeviceIoControl ??? pk acces refusé ? [ par akk ]
Bonjour,Voila lorsque j'execute ce code :(on passe le nom du lecteur en parametre exemple : main C)#include #include <iostre
Fichier include "glut.h" [ par Ben0007 ]
Hello,J'obtiens ce message d'erreur en compilant un exemple de programme trouvé sur ce site:"fatal error C1083: Cannot open include file: 'gl/glut.h':
Problème copie de fichier.... [ par Clonk ]
Bonjour,Je voudrais copier un fichier texte dans mon appli, j'ai fais la fonction suivante://Copie d'un fichier (création du backup)int copier(char *
VC++ et erreurs de compilations :( [ par morpheus83z ]
Bonjour tout le monde !Voilà, je ne comprends pas, j'ai un programme qui ne veut pas se compiler et je désespère vraiment ...#include // iostream.h e
problème de char [ par minet03 ]
Coucoutout le monde, tout d'abord voilà mon code :#include #include #include #include #include #include char *bin_dec(char *binai
SOS manque d'inspiration [ par graall ]
J'ai besoin de faire un petit programme (en mode console) qui demande à l'utilisateur de saisir le nom d'un fichier et ensuite, qui vérifie si ce fich
Pb de majuscule à modifier sur un fichier [ par lacharlottinne ]
Je voudrai convertir le text de mon fichier tout en minuscule .. quelqu'un peut m'aider ? voici le code #include #include #include #include #includ
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|