Edition de liens

Signaler
Messages postés
3
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
8 janvier 2005
-
Messages postés
3
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
8 janvier 2005
-
Hello!!

J'essaie desesperement de compiler un programme, mais à l'edition de lien, ça me sort un LNK2005. J'ai fait ça sous Visual C++.

Comme c pour un projet scolaire, ça commence à devenir urgent donc: svp, aidez-moi!!!!

6 réponses

Messages postés
43
Date d'inscription
jeudi 16 décembre 2004
Statut
Membre
Dernière intervention
14 mars 2007

En général, lorsqu'un lien ne peut pas être résolu, c qu'une librairie
est manquante : il faut l'ajouter manuellement dans les propriétés du
projet.

Je ne peux pas en dire plus car tu ne dis pas quelle est la fonction qui provoque cette erreur...


ciao...


-- Virtual Dust --
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
D'après MSDN, il doit s'agir d'une variable globale définie dans un .h qui est inclu dans plusieurs fichier sources.
=> mettre la déclaration du .h avec extern et dans UN des sources la redéclarer sans le mot clé extern.

Si c'est pas ça, met l'erreur en entier (et pas seulement le numéro)
Messages postés
3
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
8 janvier 2005

ok, je vais expliquer un peu plus en details

j'ai un fichier lib.cpp avec une fonction definie comme ça:

char *format_error_message(int);

ensuite, j'ai un fichier main.cpp, qui utilise lib.cpp

et donc pdt l'edition de liens, j'ai le message suivant:

main.obj : error LNK2005: "char * __cdecl format_error_message(int)"
(?format_error_message@@YAPADH@Z) already defined in lib.obj



en fait, j'ai la même chose pour tout ce qui est défini dans lib.cpp

voilà, en espérant que vous situiez mieux le problème, merci!!
Messages postés
43
Date d'inscription
jeudi 16 décembre 2004
Statut
Membre
Dernière intervention
14 mars 2007

Comment fais tu pour utiliser lib.cpp ?



Si tu fais

#include "lib.cpp"

c'est normal que tu aies une erreur : c'est comme si tu déclarais deux
fois ta fonction. Dans ton module main.cpp, tu ne dois juste déclarer
la fonction et non la redéfinir en écrivant juste

char* format_error_message(int);

et en supprimant la ligne du #include



Si lib.cpp doit servir dans plusieurs modules, il est pratique de créer
un fichier header (par exemple lib.h) dans lequel tu mets toutes les
déclarations des fonctions, leur définition (le corps de la fonction)
se trouvant dans lib.cpp. Ensuite, tu n'as plus qu'à placer la ligne
suivante au début de chaque module qui utilise des fonctions de lib.cpp

#include "lib.h"

le plus 'safe' étant d'inclure cette ligne également au début de lib.cpp



Autre méthode (qui ne marche que si le module lib.cpp est inclus dans
un seul module [sinon, utiliser un header]) : tu indiques à VC++ de ne
pas compiler lib.cpp (toujours dans le cas ou il y a le #include
"lib.cpp").


ciao...


-- Virtual Dust --
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
petite precision, si tu utilises une meme variable dans plusieurs fichiers source différent... tu la declare normalement dans ton fichier princpale ou elle est utilisé, et pour les autres tu la declare de la facon suivante:
extern type varible
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
3
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
8 janvier 2005

ok ça marche!!!

merci pour le coup de main!!