Edition de liens

Balthos Messages postés 3 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 8 janvier 2005 - 6 janv. 2005 à 16:18
Balthos Messages postés 3 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 8 janvier 2005 - 8 janv. 2005 à 12:42
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

vdust Messages postés 43 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 14 mars 2007
6 janv. 2005 à 16:45
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 --
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
6 janv. 2005 à 17:23
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)
0
Balthos Messages postés 3 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 8 janvier 2005
6 janv. 2005 à 18:56
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!!
0
vdust Messages postés 43 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 14 mars 2007
6 janv. 2005 à 20:20
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 --
0

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

Posez votre question
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
6 janv. 2005 à 20:51
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..."
0
Balthos Messages postés 3 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 8 janvier 2005
8 janv. 2005 à 12:42
ok ça marche!!!

merci pour le coup de main!!
0
Rejoignez-nous