Rechercher : dans
Par :

C++ error LNK2019

Dernière réponse le 11 mai 2009 à 17:41:56 Hyp, le 19 jan 2008 à 21:13:56 
 Signaler ce message aux modérateurs

Bonjour à tous,
Je rencontre un problème lors de la compilation d'un programme :

Édition des liens en cours...
1>TD4Gb.obj : error LNK2019: symbole externe non résolu "void __cdecl Appeler(class std::list<struct commande,class std::allocator<struct commande> >,int)" (?Appeler@@YAXV?$list@Ucommande@@V?$allocator@Ucommande@@@std@@@std@@H@Z) référencé dans la fonction _main
1>TD4Gb.obj : error LNK2019: symbole externe non résolu "void __cdecl Ajouter(class std::list<struct commande,class std::allocator<struct commande> >,int)" (?Ajouter@@YAXV?$list@Ucommande@@V?$allocator@Ucommande@@@std@@@std@@H@Z) référencé dans la fonction _main
1><Emplacement de VisualStudio>\Projects\TD4Gb\Debug\TD4Gb.exe : fatal error LNK1120: 2 externes non résolus


voici des bouts de codes :

#include <string>
#include <iostream>
#include <list>

using namespace std;
struct commande
{
string Nom;
int HeureAppel;
int Heure_Reveil ;
};
typedef list<commande> LReveil ;
typedef list<commande>::iterator Iter;

void Ajouter(list<commande> , int ) ;
void Appeler(list<commande> , int ) ;

int main()
{
int minute ;
list<commande> liste;
for(minute=0; minute< 48*60; minute++)
{
Ajouter(liste, minute) ;

Appeler(liste, minute) ;
}


}


void Ajouter(list<commande> &liste, int minute)

{
//etc....

}

void Appeler(list<commande> &liste, int minute)
{

while (liste.front().Heure_Reveil<=minute)
{
cout<<"Il est "<< minute/60<<":"<<minute%60<<", appeler "<<liste.front().Nom<<endl ;
liste.pop_front() ;
}

return ;

}

J'ai lu que c'est un problème de linker, mais la résolution dépasse ce que je sais en programmation.
Merci d'avance pour vos réponses

Configuration: Windows Vista
Firefox 2.0.0.11

1

sfel, le 20 jan 2008 à 09:50:12

Peut-etre devrais-tu rajouter

template <class commande>
au desus de tes procédures

L'ennemi est bête : il croît que c'est nous l'ennemi, alors que c'est lui !
GLOUGLOU ...

Répondre à sfel

2

Mahmah, le 20 jan 2008 à 10:22:31
  • +1

Bonjour,

Non non, pas de soucis de template ici (on n'en définit pas, juste une utilisation classique)

Par contre, tu fais une déclaration courte du style

void appeler ( Type1 var1, type2 var2 );

et tu définis:

void appeler ( Type1 &var1, type2 var2 ); avec une référence sur Type1

d'où prototypes différents, il ne trouve pas la fonction déclarée et n'utilise pas la fonction définie.

Voilou.

M.

Répondre à Mahmah

3

Hyp, le 2 fév 2008 à 21:07:40

Effectivement Mahmah, mauvaise utilisation du &..

Répondre à Hyp

4

debutantcpp, le 11 mai 2009 à 14:24:13

Quelle est la solution alors ?
Merci

Répondre à debutantcpp

5

mariemarie14, le 11 mai 2009 à 15:22:19

Salut,
j'ai eu la même erreur, et je l'ai réglée en mettant cette ligne en haut de mon main :

#pragma comment(linker, "/SUBSYSTEM:CONSOLE")

Je ne sais pas si c'est juste mais ça a l'air de fonctionner à priori.

Marie

Répondre à mariemarie14

6

 debutantcpp, le 11 mai 2009 à 17:41:56

Merci de ta réponse mais ca ne fonctionne pas j'ai toujours cette erreur

md5_dgst.obj : error LNK2019: symbole externe non résolu _md5_block_asm_host_order référencé dans la fonction _MD5_Update

Qui vient de cette fonction MD5_Update(&Context, String, strlen(String));

Declaré ici void MD5_Update(MD5_CTX *c, const void *data, unsigned long len);

Et voici la definition de la structure

typedef struct MD5state_st
{
MD5_LONG A,B,C,D;
MD5_LONG Nl,Nh;
MD5_LONG data[MD5_LBLOCK];
int num;
} MD5_CTX;


Si quelqu'un a une idée merci de m'en faire part

Répondre à debutantcpp
Collection CommentÇaMarche.net