Compilation C visual studio 2005

Fermé
Jules - 11 avril 2008 à 14:24
 Jules - 11 avril 2008 à 14:45
Bonjour à tous,

J'ai une erreur de compilation d'un programme c avec visual studio 2005 :

Error 1 Program 'D:\Mes Documents\Visual Studio 2005\Projects\Project2\Project2\obj\Debug\Project2.exe' does not contain a static 'Main' method suitable for an entry point Project2

J'avoue utiliser cette outil pour la 1ere fois, j'ai créé un projet, ouvert mon fichier check.c puis le debug ou le build solution me génère la même erreur.

Pour information, la compilation sous unix par gcc fonctionne ...

Est-ce que vous auriez une piste à me proposer ? ... ou un autre outils pour compiler du C sur windows ?

Merci.

Mon programme vérifie le format des fichiers

#include <values.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

#define MAX_RECORD_LENGTH 32767

/* Global parameters and their default values */
int RecordLength = 0; /* default */
char *InFile = NULL; /* file path to check */


/* Preallocated string to store lines */
char CurrentLine[MAX_RECORD_LENGTH + 1] = "";

/* exit in case of error */
ExitError(int returnCode, char *returnMsg) {
if (returnMsg != NULL) fprintf(stderr,"CHECKTF-ERROR-%d: %s\n",returnCode,returnMsg);
exit(returnCode);
}

/* Checking command line arguments and set global parameters */
void ProcessArgs(int argc, char *argv[]) {
int curArg;

/* scan arguments */
for(curArg = 1; curArg < argc; curArg++) {
if (strncasecmp(argv[curArg],"-recsize=",9) == 0) { RecordLength = atoi(argv[curArg] + 9);
} else InFile = argv[curArg];
}
RecordLength = (RecordLength < 0)?0:((RecordLength > MAX_RECORD_LENGTH)?MAX_RECORD_LENGTH:RecordLength);

/* check incompatibilities */
if (RecordLength == 0) ExitError(1,"record length > 0");
RecordLength++;
if (InFile == NULL) ExitError(1,"file name missing");
}

void CheckRecords(char *curFile) {
char *curLine;
FILE *curStream;

curStream = fopen(curFile, "r");
if (curStream == NULL) ExitError(3,"cannot open file");

do {
curLine = fgets(CurrentLine,MAX_RECORD_LENGTH + 1,curStream);
if (curLine != NULL) {
if (strlen(curLine) != RecordLength) {
fclose(curStream);
ExitError(10,"bad format");
}
}
if ferror(curStream) ExitError(4,"error reading input");
if ferror(stdout) ExitError(5,"error writing output");
if feof(curStream) curLine = NULL;
} while(curLine != NULL);

fclose(curStream);
}

/* main(int argc, char *argv[]) { */
ProcessArgs(argc,argv);
CheckRecords(InFile);
exit(0);
}
A voir également:

2 réponses

salut,
c'est normal il te faut une fonction main comme point de depart de ton programme
ton main semble etre en commentaire
0
merci
0
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
11 avril 2008 à 14:38
Bonjour,

Si tu cherches un autre compilateur pour Windows il y a Gcc. Par contre je le trouve un peu con d'accepter de faire des programmes qui n'ont pas de fonction "main". J'en avais de meilleurs souvenir.

M.
0
yep, j'avais bien commenté la fonction main, j'avais oublié ... la compilation gcc de ce même programme fonctionne sous unix. Je n'arrivais pas vraiment à saisir pourquoi elle ne fonctionne pas sous windows.
Merci pour les posts.
0