Je suis débutant en C++. L'erreur LINK :fatal error LNK1104: cannot open file 'MSVCRTD.lib'
s'affiche lorsque j'essaie de déboguer un projet dans Microsoft Visual C++ 2010 Express. J'ai cherché sur Stackoverflow et Google ce que je devais faire, mais je n'ai pas trouvé de réponse. Ce que j’ai compris, le fichier msvcrtd.lib devrait se trouver dans mappage\Microsoft Visual Studio 10.0\VC\lib, mais ce fichier n’existe pas. Que devrais-je faire?
Accédez aux propriétés de votre projet, sélectionnez Linker à partir de la gauche. Ajouter ceci à " Répertoires de bibliothèque supplémentaires ":
"(Your Visual Studio Path)\VC\lib"
Par exemple:
C:\Program Files\Microsoft Visual Studio 10.0\VC\lib
Pour les pauvres âmes qui luttent avec cela, après une heure de recherche, j'ai trouvé une solution pour mon Visual Studio Enterprise 2017:
Premièrement, trouvons où se trouve votre fichier de bibliothèque:
Avec Windows Explorer, accédez au répertoire dans lequel Visual Studio est installé (par défaut: C:\Program Files (x86)\Microsoft Visual Studio) et recherchez msvcrtd.lib.
J'ai trouvé le mien être ici:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\lib\onecore\x86
Solution rapide (pour un seul projet):
Correctif permanent (pour tous les projets)}
Il existe une case à cocher indiquant "Hériter des valeurs par défaut du parent ou du projet" dans certaines des boîtes de dialogue de propriétés dans Propriétés du projet. Assurez-vous que cette case est cochée pour vos fenêtres de propriétés Inclure et Bibliothèque répertoires et bien sûr pour votre Dépendances supplémentaires .
J'ai rencontré ce problème. Le fichier existait sur ma machine, c'était dans le chemin de recherche. J'étais perplexe car le résultat de l'erreur est vraiment inutile. Dans mon cas, j'avais activé Spectre, mais je n'avais pas téléchargé les bibliothèques d'exécution pour Spectre. Une fois que j'ai fait le téléchargement, tout allait bien avec le monde. Je devais également l'installer sur mes serveurs de build CI, car ces bibliothèques ne sont pas installées avec VS par défaut.
il est également intéressant de vérifier que le fichier MSVCRTD.lib est présent dans "C:\Programmes\Microsoft Visual Studio 10.0\VC\lib" pour x64 et dans C:\Programmes (x86)\Microsoft Visual Studio 10.0\VC\lib pour 32 bits. Parfois, VS peut ne pas être installé correctement OR, ces fichiers peuvent être supprimés accidentellement.
Scénario:
Windows 10 avecVisual Studio 2017(installation FRESH).
Projet 'C' (LINK: irrécupérable erreur LNK1104 : impossible d'ouvrir le fichier ' MSVCRTD.lib ').
Résoudre:
Exécutez ' Visual Studio Installer '.
Cliquez sur le bouton 'Modifier'.
Sélectionnez ' Développement du bureau avec C++ '.
Dans "Détails de l'installation" (généralement dans la barre latérale droite), sélectionnez:
4.1. VC++ 2015.3 v14.00 (v140) jeu d’outils pour ordinateurs de bureau .
Cliquez avec le bouton droit sur 'SomeProject' -> 'Propriétés' -> ' Éditeur de liens ' -> ' Général ' -> ' Répertoires de bibliothèque supplémentaires ': $ (VCToolsInstallDir) \ lib\x86
(!!! pour x64 projet: 'Répertoires de bibliothèque supplémentaires': $ (VCToolsInstallDir)\lib\x64 !!!)
La réponse ci-dessus n'était pas tout à fait exacte pour moi. J'ai installé VS2010 Ultimate et le fichier en question ne se trouve pas dans mon dossier Visual Studio 10.0\VC. Je l’ai plutôt trouvé dans le dossier Visual Studio 9.0\VC. Donc, si c'est le cas pour n'importe qui, suivez la démarche pour modifier l'éditeur de liens mais utilisez plutôt le dossier Visual Studio 9.0\VC. Cela a fonctionné pour moi.
Pour Visual Studio 2017 Accédez aux propriétés de votre projet, sélectionnez Linker (Lien) en partant de la gauche. Ajoutez ceci aux "Répertoires de bibliothèque supplémentaires":
C:\Fichiers de programme (x86)\Microsoft Visual Studio\Partagé\14.0\VC\lib
Dans VS2017 (Communauté/Entreprise/Édition Intégrale/Professionnel):
Ajoutez le (s) chemin (s) du (des) dossier (s) contenant le (s) fichier (s) ".lib" souhaité (s) dans le chemin suivant dans VS:
(Clic droit) Projet (dans l'Explorateur de solutions) -> Propriétés-> Propriétés de configuration-> Éditeur de liens-> Général-> Répertoires de bibliothèque supplémentaires
S'il y a plus d'un fichier ".lib", utilisez ';' pour les séparer, sinon cliquez sur la boîte d'édition qui correspond à "Répertoires de bibliothèque supplémentaires", puis cliquez sur "" dans le menu déroulant et ajoutez tous les fichiers ".lib" souhaités dans la fenêtre récemment ouverte, l'un après l'autre et d'une manière facile à gérer.
Je me suis heurté à cela avec Visual Studio 2017. J'ai essayé les solutions suggérées ici en ajoutant explicitement les chemins d'accès à l'emplacement du fichier 'MSVCRT.lib'. Mais j’ai senti que ce n’était probablement pas la bonne approche car auparavant, cela n’avait pas posé de problème avec mon projet.
Après des essais, j'ai découvert que si je laissais une valeur vide ou vide dans la section "Linker -> Input", cela me donnerait l'erreur à propos de LNK1104: impossible d'ouvrir le fichier "MSVCRT.lib". Finalement, j'ai compris que je devrais laisser cette valeur à la place.
Sur le projet Visual Studio, cliquez avec le bouton droit de la souris sur l'élément de projet dans le panneau Explorateur de solutions (et non sur la solution elle-même, qui est l'élément le plus haut), puis sélectionnez Propriétés. À partir de là, procédez comme suit:
Linker -> Input:% (AdditionalDependencies)
Ces informations supplémentaires pourraient être utiles si vous vous retrouviez dans la même situation que moi. J'ai découvert que je ne devrais mettre aucun chemin de bibliothèque non-système dans la section Linker -> Input. Avec mon projet, j'essayais de compiler avec des fichiers externes .lib. Auparavant, j'avais dans cette section d'entrée une valeur telle que: $ (ProjectDir) lib; % (AdditionalDependencies) mais cela entraîne d’autres problèmes. J'ai découvert le bon endroit (il semble jusqu'à présent) pour mettre des chemins pour référencer des fichiers .lib externes dans un projet C/C++ dans Visual Studio 2017, c'est ici:
VC++ Directories -> Répertoires de bibliothèque: $ (ProjectDir) lib; $ (LibraryPath)
Notez que la valeur $ (LibraryPath) inclura des valeurs supplémentaires telles que héritées de parents. Mon projet de dossier contenait un dossier appelé 'lib', raison pour laquelle j'avais la première valeur avant le point-virgule.
J'ai résolu le problème en ajoutant #using <mscorlib.dll>
dans le fichier principal
J'ai une erreur légèrement différente
LNK1104 ne peut pas ouvrir le fichier 'MSVCURTD.lib'
Notez que c'est msvcUrtd (pas msvcrtd), mais le fichier est introuvable sur mon système.
Résolu en définissant les options suivantes:
Project Properties
General
Character Set: Not Set
Common Language Runtime Support: Common Language Runtime Support (/clr)
J'espère que cela pourra aider.