Error LNK2019

Résolu
Signaler
Messages postés
2
Date d'inscription
dimanche 18 janvier 2009
Statut
Membre
Dernière intervention
20 janvier 2009
-
Messages postés
15192
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
7 décembre 2021
-
bonjour ,
je suis débutant en programmation , je  arrive pas a résoudre cette erreur , quand je compile tout ce passe bien , 0 erreur 0 avertissement , mais quand je debug .ca me sort deux erreurs  :
1>main().obj : error LNK2019: symbole externe non résolu "int __cdecl Acquisition_Ajoute(struct Personne *,unsigned int)" (?Acquisition_Ajoute@@YAHPAUPersonne@@I@Z) référencé dans la fonction _main
1>C:\Documents and Settings\issam\Bureau\tp C\tp\tp7\Debug\tp7.exe : fatal error LNK1120: 1 externes non résolus

j'utilise visual basic 2005 .  voila mon code :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct Personne  Personne;
struct Personne
{
    char*nom ;unsigned  int num;
};
size_t n;
char *nom= NULL;
int tel;

int Acquisition_Ajoute (Personne*Annuaire,size_t);

void Tri (Personne *Annuaire);

void main (void)
{

    Personne *Annuaire;
    Annuaire =(Personne*) malloc(n*sizeof(Personne));

    if (Acquisition_Ajoute(Annuaire,n))
    {
        printf("%s %d",Annuaire->nom,Annuaire->num);
    }

}

int Acquisition_Ajoute (Personne*Annuaire,size_t *n)
{

    char tmp[100];
    do
    {

        printf ("Saisie du nom moin de 100 caracteres\n");
        _flushall();
        fgets(tmp,sizeof(tmp),stdin);
        Annuaire->nom = (char*)malloc(((strlen(tmp))+1)* sizeof(char));
        strcpy_s((Annuaire->nom),strlen(tmp)+1,tmp);
        printf ("Saisie du num\n");
        _flushall();
        scanf_s("%d",&(Annuaire->num));
        if (!( strlen (Annuaire->nom)<101 && Annuaire->num>0 ) )
        {
            return 0;
            free(Annuaire);
            printf ("Nom ou Numero incorrect \n(Nom ne depassant pas 100 caracteres et numero de telephone et un nombre positif \n");
        }
        else
            *n++;
        return 1;
    }while (!( strlen (Annuaire->nom)<101 && Annuaire->nom >0 ) );

}

void Tri (Personne *Annuaire)
{
    unsigned int i=0;
    char tmp[100];

    for (i=0 ; i<n ; i++)
    {
        if (strcmp (Annuaire[i].nom, Annuaire[i+1].nom) < 0)   
        {
            strcpy_s (tmp,strlen(Annuaire[i].nom)+1,Annuaire[i].nom);                               
            strcpy_s (Annuaire[i].nom,strlen(Annuaire[i+1].nom)+1,Annuaire[i+1].nom);
            strcpy_s (Annuaire[i+1].nom,strlen(tmp)+1,tmp);

        }
    }
}

j'ai déja cherché dans les discution ici , j'ai trouvé un tuto qui montre comment configurer visual basic 2005 pour les application console, j'ai suivi tout ce qu'il ya  dedans , mais ca na pas marché . aucun changement. j'ai les meme erreurs merci pour votre aide .

3 réponses

Messages postés
15192
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
7 décembre 2021
101
Hello,
D'un côté, tu déclare un paramètre en size_t et de l'autre size_t*
Petite étourderie je pense.
Et puis je pense qu'à la place de Visual Basic, tu voulais dire Visual Studio...

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
2
Date d'inscription
dimanche 18 janvier 2009
Statut
Membre
Dernière intervention
20 janvier 2009

salut bruno tu veux dire quoi par de l'autre ??   sur la fontion tri  j'ai voulu cree un poiteur sur n . qui me permet de changer la valeur de n . cette valeur sera effectivement changé apres la fin de la fonction , ou je me trompe peut etre?
oui Je voulais dire Visual studio 2005 en effet.

si je me trompe comment je peut faire pour changer la valeur de n dans une fonction. sachant que c pas la valeur que je veux renvoyé.

Merci.
Messages postés
15192
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
7 décembre 2021
101
Il faut que les 2 prototypes aient la même forme.
Au dessus du main, tu as mis: int Acquisition_Ajoute (Personne*Annuaire,size_t);
En dessous, tu as mis: int Acquisition_Ajoute (Personne*Annuaire,size_t *n)
Dans ton cas, il faut une étoile dans les 2.

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...