Comment puis-je résoudre ce lien d'erreur dans Visual Studio (LNK2005)?
Je continue à avoir des erreurs d'édition de liens de la forme suivante:
libcmtd.dll msvmrtd.dll un élément(ex: _mkdir ) déjà
défini...
et je ne sais pas comment les résoudre.
Ici est un message d'erreur:
privé: __thiscall type_info::type_info(classe type_info const &)"
(??0type_info@@AAE@ABV0@@Z) déjà défini dans
LIBCMTD.lib(typinfo.obj)MSVCRTD.lib(ti_inst.obj) : error LNK2005: "privé: la classe type_info &
__thiscall type_info::operator=(classe type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) déjà défini dans
LIBCMTD.lib(typinfo.obj)
Pouvez-vous m'aider à résoudre ce problème?
J'ai exactement le même problème de linker avec la
type_info
classe. J'ai changé de Multithread-Debug-DLL Multithread-Debug. Avant cela, tout a fonctionné. Cependant, j'ai besoin Multithread-Debug pour que mon programme fonctionne sur des ordinateurs différents. Avez-vous arriver à une solution?OriginalL'auteur Cute | 2009-06-04
Vous devez vous connecter pour publier un commentaire.
De vérifier quelques points:
Sont vos fichiers d'en-tête gardé. I. e. ont-ils
#ifndef
gardes.Êtes-vous définir (non du modèle) fonctions de dans les en-têtes sans
inline
mot-clé. Qui salit beaucoup de choses.Êtes-vous essayer de définir des modèles dans un .fichier cpp. Tous les modèles définitions doivent être dans les en-têtes.
Post un peu de code et de texte de l'erreur s'il vous plaît!
#ifndef
gardes.Bravo pour la 2ème 🙂
OriginalL'auteur rlbond
Votre problème est que vous êtes en liaison avec les deux fichiers en assurant le même symbole.
Vous n'avez pas fourni le vrai message d'erreur si nous ne pouvons pas vous dire exactement quel est le problème, mais c'est probablement que vous êtes le lien avec les bibliothèques de deux différentes versions de Visual Studio.
Il y a aussi des solutions en cherchant sur le web (je suppose que vous avez fait cela, mais juste manqué les articles en question 🙂 qui suggèrent que vous pouvez résoudre le problème en modifiant les options du projet de
"Multi-threaded Debug(/MTd)"
à"Multi-threaded Debug DLL (/MTD)"
mais je n'ai pas regardé dans cette.Veuillez poster le complet de l'erreur, de sorte que nous pouvons offrir plus de services ciblés.
OriginalL'auteur paxdiablo
Assurez-vous que l'option que vous sélectionnez pour l'Exécution Bibliothèque de liaison est le même pour chaque projet et de la bibliothèque.
Propriétés du projet -> Propriétés de Configuration -> C/C++ -> Génération de Code -> Bibliothèque d'Exécution -> "Multi-thread" /"DLL multithread" /...
Ma question était de tous mes projets C++ ont été "Multi-thread", mais j'ai été référencement fortran les modules qui ont été "DLL multithread"
OriginalL'auteur James Wierzba
L'article MSDN sur LNK4098 a une très utile table: il vous informe sur les bibliothèques pour ajouter manuellement à la "Ignorer bibliothèque spécifique" de la liste, en fonction de la CRT que vous utilisez. Vous devez choisir un CRT (Multithread ou pas; statique ou de la DLL; debug ou release), puis ajouter les bibliothèques ignorer, selon votre choix.
La cause sous-jacente est décrit plus en détail dans KB154753 ... les bibliothèques qu'un programme s'lien avec construit à l'aide de Visual C++
Mon interprétation de ceci est que, dans certaines situations, l'algorithme qui sélectionne automatiquement qui bibliothèques CRT de lier votre code avec la volonté de choisir plusieurs contradictoires bibliothèques.
OriginalL'auteur Roman Starkov