Erreur de symbole externe non résolu qui persiste...

Bibi0570 Messages postés 3 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 15 avril 2008 - 15 avril 2008 à 15:51
cs_cedric177 Messages postés 20 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 19 avril 2008 - 16 avril 2008 à 11:56
Salut à tous. j'ai l'erreur qu'il y a dans le titre qui persiste lorsque je compile. j'ai déjà vu ce problème qui revient souvent sur les forums mais je n'arrive pas à le résoudre.
j'ai essayé de verifier les propriétés de compilation du projet, mais je ne suis quand même pas sûr d'avoir tout correctment paramétré.
je développe sous visual studio c++ express edition 2008. je vous rajoute la partie du code qui est concernée.
j'espère que quelqu'un pourra m'aider.
merci

#include

"Carnet.h"#include

<stdio.h>#include

<string.h>#include

<conio.h>#include

<stdlib.h>#include

<windows.h>extern

Personne Carnet[];
//Variables globalesint

extern Nbcontacts;
//Variables globalesint

i; 

void

Charger(){

int

i=0;FILE* pf;

char

ligne[200];
char

*ppv1;
//déclaration du pointeur point virgulechar

*ppv2;
char

*ppv3;
char

*ppv4;
char

bFin=0;pf= fopen(

"carnet.csv",
"r");ligne[0]=0;

if

(pf==NULL){

printf (

"le carnet n'hexiste pas");getch();

return;}

do

{

ligne[0]=

'\0';fgets (ligne,200,pf);

//lire une ligne du carnet d'adresse

if(strlen(ligne)>3){

ppv1=strstr(ligne,

";");
// recherche le ; de la fin du nomppv2=strstr(ppv1+1,

";");ppv3=strstr(ppv2+1,

";");ppv4=strstr(ppv3+1,

";");strncpy(Carnet[i].Nom,ligne,ppv1-ligne);

// dispatche les champs dans la iemme case du tableaustrncpy(Carnet[i].Prenom,ppv1+1,ppv2-ppv1-1);

strncpy(Carnet[i].Adresse,ppv2+1,ppv3-ppv2-1);

Carnet[i].Age=atoi(ppv3+1);

i++;

}

elsebFin=1;

}

while

(bFin==0);
// on est pas à la fin du fichier; 

Nbcontacts=i;

fclose(pf);

//fermer le fichier}

ERREURS:

1>Fonctions.obj : error LNK2001: symbole externe non résolu "int Nbcontacts" (?Nbcontacts@@3HA)

1>Fonctions.obj : error LNK2001: symbole externe non résolu "struct Personne * Carnet" (?Carnet@@3PAUPersonne@@A)

1>LIBCMT.lib(wincrt0.obj) : error LNK2019: symbole externe non résolu _WinMain@16 référencé dans la fonction ___tmainCRTStartup

1>C:\Users\Anto\Documents\Visual Studio 2008\Projects\test_tp\Debug\test_tp.exe : fatal error LNK1120: 3 externes non résolus

5 réponses

Bibi0570 Messages postés 3 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 15 avril 2008
15 avril 2008 à 15:51
ps:désolé pour la présentation j'ai pas fait attention!!!
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
15 avril 2008 à 16:14
Bonjour,

Les variables déclarées externes int NbContacts et struct Personne* Carnet et la fonction principale du programme Windows WinMain() n'ont pas été trouvées par l'éditeur de liens. Les 2 variables devraient être dans le fichier d'entête Carnet.h ? ou dans un autre fichier d'entête manquant ici ?

Jean-François
0
Bibi0570 Messages postés 3 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 15 avril 2008
15 avril 2008 à 16:20
j'avais un fichié e-tête dans le-quel je déclaré ma structure et mes fonctions, mais en incluant les extern dedans çà n'a pas résolu le problème.
merci quand même
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
15 avril 2008 à 16:41
Il ne faut pas que les variables soient déclarées extern dans tous les fichiers !!!

extern int NbContacts est juste là pour dire au compilateur : "Dans ce module tu vas (peut-être) rencontrer la variable NbContacts mais elle n'y est pas déclarée ! C'est pas grave ! C'est pas une erreur ! NbContacts a été (ou sera) déclarée dans un autre module et à la fin de la compilation des modules, l'éditeur de liens se chargera de la pointer là où elle est".

Il faut que ces variables soient déclarées ("pour de vrai", sans extern) quelque part.

L'idée générale est de placer les extern ... dans un fichier d'entête (.h/.hpp) et d'inclure ce fichier dans tous les modules (.c/.cpp) du projet ET d'ajouter la déclaration de ces variables (la même chose sans extern) dans l'un des modules.
Jean-François
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_cedric177 Messages postés 20 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 19 avril 2008
16 avril 2008 à 11:56
cedric

ta ca mettre tout le temps annule ou contunuer si a ecrit sinon resou le probleme en telechargent winaso registry optimiser repond si sa marche ou non.
0
Rejoignez-nous