Accueil > Forum > > > > Erreur de type LNK 2005
Erreur de type LNK 2005
lundi 18 août 2008 à 15:56:44 |
Erreur de type LNK 2005

BenGourion73
|
Bonjour, J'ai une solution en développement qui se compose d'une librairie statique et d'un exécutable. La librairie statique compile bien toute seule. Quand l'exécutable est compilé, pas d'erreur jusqu'à l'étape d'éditions des liens où plusieurs message du type suivant apparaissent : msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) déjà défini(e) dans libelementaire.lib(C_Calendar.obj) et surtout : nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) déjà défini(e) dans MSVCRTD.lib(MSVCR80D.dll) Le compilateur indique donc que plusieurs symboles serait définis plusieurs fois dans le programme mais comme pour certains, il s'agit de symboles génériques type operator new ou delete, je pense que l'erreur provient soit : - d'un problème de config de projets ; - d'un include multiple d'un même fichier de base stdafx.h ou autre. Pour ce qui est de savoir si ça vient d'un pb de config de projets, j'ai essayé de reproduire le pb en montant un projet identique (mais pas avec les mêmes fichiers sources) mais là pas d'erreur ce qui me laisse penser que l'erreur ne vient pas de là mais si cette expérience me semble insuffisante pour éliminer totalement cette hypothèse... Alors qui a une idée ?
|
|
lundi 18 août 2008 à 17:33:17 |
Re : Erreur de type LNK 2005

BenGourion73
|
Je viens de m'apercevoir que le projet chargé de générer le .lib de la librairie statique générait à la place un .obj. Comme par ailleurs, j'ai dans ce projet un fichier source portant le nom du projet. Du coup, peut-être que Visual C++ n'aime pas que le .lib porte le même nom qu'un fichier source...
|
|
mardi 19 août 2008 à 18:06:16 |
Re : Erreur de type LNK 2005

Lucky92
|
Dans les propriétés de projet , à la section génération de code, il y a une option Bibliothèque Runtime. Il faut que tu compiles la librairie et l'application avec la même option de compilation.  
|
|
mardi 19 août 2008 à 18:55:13 |
Re : Erreur de type LNK 2005

BenGourion73
|
Merci,
J'ai déjà vérifié que l'exe et le .lib ont bien la même bibliothèque de runtime. Par contre, je pense que mon erreur vient du fait que dans la librairie, j'ai des math.h et string.h propres différents de ceux de la librairie C++ standard... Je suis en train de voir de quoi il retourne...
|
|
mardi 19 août 2008 à 23:21:36 |
Re : Erreur de type LNK 2005

Lucky92
|
En c++, utilises de préférence
#include<string> #include<cmath>
au lieu de
#include<string.h> #include<math.h>
Sinon, vérifie également que tu n'as pas une option /clr (code managé) en trop ( ou en moins )...
|
|
mercredi 20 août 2008 à 19:00:06 |
Re : Erreur de type LNK 2005

BenGourion73
|
C'est bon, j'ai trouvé. Bon pour que d'autres développeurs ne rament pas avec cette saloperie d'erreur de LINK 2005, voici comment repérer la source du problème : 1/ Mettez l'option /VERBOSE:LIB dans l'Editeur de liens ---- > ça permet d'avoir un retour sur les librairies recherchées par Visual Studio au moment de l'éditien des liens 2/ Mettez bien sur la même bibliothèque de RunTime dans tous les projets de votre solution mais ça ne suffit pas ... 3/ ...car il faut s'assurer que la liste des bibliothèques recherchées mise en évidence gràce au setting /VERBOSE:LIB du 1/ colle bien avec des librairies compatibles avec celle choisie pour le Runtime. | Pour utiliser cette bibliothèque runtime | Ignorer ces bibliothèques |
|---|
Un seul thread (libc.lib) | libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib | Multithread (libcmt.lib) | libc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib | Multithread utilisant des DLL (msvcrt.lib) | libc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib | Un seul thread débogage (libcd.lib) | libc.lib, libcmt.lib, msvcrt.lib, libcmtd.lib, msvcrtd.lib | Multithread débogage (libcmtd.lib) | libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, msvcrtd.lib | Multithread débogage utilisant des DLL (msvcrtd.lib) | libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib |
Attention si mon erreur de LINK apparaissait c'est que Visual Studio ne respecte pas automatiquement pas les règles du tableau précédent. Ceci étant dit, deux solutions : 1/ Mettre dans C/C++ --- > Avancé --- >Omettre les noms de bibliothèque par défaut la valeur Oui (Zl)
Ou
2/ Spécifier dans Editeur de liens --- > Bibiothèque spécifique ignorée avec pour chaque librairie XXX à ignorer la commande /NODEFAULTLIB:XXX, chaque instruction séparée d'un pt virgule.
|
|
Cette discussion est classée dans : basic, erreur, type, std, lib
Répondre à ce message
Sujets en rapport avec ce message
erreur link2001 [ par balbeau ]
J'ai l'erreur souivante qui commence à "m'agacer"......Loading.obj : error LNK2001: symbole externe non résolu "class std::basic_ofstream > fout" (?fo
0xa0 <-erreur VC++ [ par Toobad ]
Mon vc++6 arrete pas de me faire la guelle.il m'envoie une tonne d'erreur 0xa0 partout, sur toutes les API. Je crois que c'est à cause des include ou
Linker Error [ par crocejf2000 ]
J'essaye d'afficher mon fichier d'aide .chm avec la fonction HTMLHelp en incluant .Mais le linker me donne une erreur :Error: Unresolved external 'Htm
ERREUR DE LIBCRAIRIE !!!!! [ par frysa ]
Bonjour! Je prévois commencer à apprendre l'OpenGL. Bon j'ai installé glut.h et glut32.dll et glut32.lib dans rep: LIB mais quand je compile...
[VS.NET] Une erreur de compilation incroyable! [ par Sunsawe ]
Bonjour, excusez moi mais je ne savais pas comment titrer mon message autrement. Voilà là fameuse erreur qui se suffit à elle même: Mesfunc.cpp(72) :
afficher un type string [ par GIRAFE ENRHUMEE ]
Dans Visual C++, on m'affiche l'erreur que les flots >) ne sont pas surdéfinis pour recevoir une opérande droite de type string.Dans Dev C++, je n'ai
probléme avec cin [ par ima81 ]
bonjour mon probléme avec cin vient du fait qu'elle engendre erreur lors de la compilation quand elle ne reconnait pas un type enum que je declare
problème avec une librairie [ par hrp ]
Hello,je travaille avec Borland C++ Builder 6 et je tente d'utiliser les fonctions de librairie "WizPro.lib". A la compilation voici l'erreur:[Lieur E
problem pour compiler ce truc <d3d8.h> [ par temoin ]
TEMOIN Bonjour je voudrais compiler un prog de directx ca m'affiche cette erreur je tout ajouter les linkquelqu'un pourrait me dire ce quoi cette erre
[VC++] erreur : std is not a class... ??? [ par elo29 ]
Bonjour, Je code sous Visual C++ et il refuse le "using namespace std". L'erreur est la suivante : error C2653 : 'std' is not a class or a namespace
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|