Posez votre question Signaler

C++ error LNK2019

Hyp - Dernière réponse le 11 mai 2009 à 17:41
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
Lire la suite 

C++ error LNK2019 »

6 réponses
Réponse
+2
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
peut-etre devrais-tu rajouter

template <class commande>
au desus de tes procédures
Ajouter un commentaire
Réponse
+0
moins plus
effectivement Mahmah, mauvaise utilisation du &..
debutantcpp - 11 mai 2009 à 14:24
Quelle est la solution alors ?
Merci
Ajouter un commentaire
Réponse
+0
moins plus
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
debutantcpp - 11 mai 2009 à 17:41
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
Ajouter un commentaire
Ce document intitulé « C++ error LNK2019 » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Windows 8 - À quoi s'attendre ?