Partager via


Erreur des outils Éditeur de liens LNK1104

impossible d’ouvrir le fichier 'filename'

Cette erreur est signalée lorsque l’éditeur de liens ne parvient pas à ouvrir un fichier, soit pour la lecture, soit pour l’écriture. Les deux causes les plus courantes du problème sont les suivantes :

  • votre programme est déjà en cours d’exécution ou est chargé dans le débogueur, et

  • vos chemins de bibliothèque sont incorrects ou ne sont pas encapsulés entre guillemets doubles.

Il existe de nombreuses autres causes possibles pour cette erreur. Pour les affiner, vérifiez d’abord le type de nom de fichier. Ensuite, utilisez les sections suivantes pour identifier et résoudre le problème spécifique.

Impossible d’ouvrir votre application ou son fichier .pdb

Votre application est en cours d’exécution ou est chargée dans le débogueur

Lorsque le nom de fichier est le nom de votre exécutable ou un fichier .pdb associé, vérifiez si votre application est déjà en cours d’exécution. Vérifiez ensuite s’il est chargé dans un débogueur. Pour résoudre ce problème, arrêtez le programme et déchargez-le du débogueur avant de le générer à nouveau. Si l’application est ouverte dans un autre programme, tel qu’un éditeur de ressources, fermez-la. Si votre programme ne répond pas, vous devrez peut-être utiliser le Gestionnaire des tâches pour mettre fin au processus. Vous devrez peut-être également fermer et redémarrer Visual Studio.

Votre application est verrouillée par une analyse antivirus

Les programmes antivirus bloquent souvent temporairement l’accès aux fichiers nouvellement créés, en particulier .exe et .dll fichiers exécutables. Pour résoudre ce problème, essayez d’exclure les répertoires de build de votre projet à partir du scanneur antivirus.

Impossible d’ouvrir un fichier de bibliothèque Microsoft

Bibliothèques Windows, telles que kernel32.lib

Si le fichier qui ne peut pas être ouvert est l’un des fichiers de bibliothèque standard fournis par Microsoft, tels que kernel32.lib, vous risquez d’avoir une erreur de configuration de projet ou une erreur d’installation. Vérifiez que le Kit de développement logiciel (SDK) Windows est installé. Si votre projet nécessite d’autres bibliothèques Microsoft, telles que MFC, vérifiez que les composants MFC ont également été installés par le programme d’installation de Visual Studio. Vous pouvez réexécuter le programme d’installation pour ajouter des composants facultatifs à tout moment. Pour plus d’informations, consultez Modifier Visual Studio. Utilisez l’onglet Composants individuels dans le programme d’installation pour choisir des bibliothèques et des kits sdk spécifiques.

Bibliothèques vcruntime avec version

Si le message d’erreur comporte une bibliothèque Microsoft avec version telle que msvcr120.lib, l’ensemble d’outils de plateforme pour cette version du compilateur peut ne pas être installé. Pour résoudre ce problème, vous avez deux options : mettre à niveau le projet pour utiliser l’ensemble d’outils de plateforme actuel ou installer l’ensemble d’outils plus ancien et générer le projet inchangé. Pour plus d’informations, consultez Mise à niveau de projets à partir de versions antérieures de Visual C++ et Utilisation du multi-ciblage natif dans Visual Studio pour générer d’anciens projets.

Bibliothèques spécifiques à la vente au détail, au débogage ou à la plateforme

L’erreur peut se produire lorsque vous créez pour la première fois une nouvelle plateforme ou une configuration cible, telle que Retail ou ARM64. Dans l’IDE, vérifiez que l’ensemble d’outils de plateforme et la version du Kit de développement logiciel (SDK) Windows spécifiés dans la page de propriétés Général sont installés. Vérifiez également que les bibliothèques requises sont disponibles dans les répertoires de bibliothèque spécifiés dans la page de propriétés des répertoires VC++. Vérifiez les propriétés de chaque configuration, telles que Debug, Retail, x86 ou ARM64. Si une build fonctionne mais qu’une autre ne le fait pas, comparez les paramètres pour les deux. Installez les outils et bibliothèques requis manquants.

Bibliothèque vccorlib.lib

Il n’existe pas de bibliothèques atténuées par Spectre pour les applications ou composants Windows universels (UWP). Si le message d’erreur inclut vccorlib.lib, vous avez peut-être activé /Qspectre dans un projet UWP. Désactivez l’option du /Qspectre compilateur pour résoudre ce problème. Dans Visual Studio, modifiez la propriété Spectre Mitigation . Il se trouve dans la page Génération de code C/C++>de la boîte de dialogue Pages de propriétés du projet.

Bibliothèques dans des projets à partir de sources en ligne ou d’autres sources

Si vous générez un projet copié à partir d’un autre ordinateur, les emplacements d’installation de la bibliothèque peuvent être différents. Pour les builds de ligne de commande, vérifiez que la variable d’environnement LIB et les chemins de bibliothèque sont correctement définis pour la build. Dans Visual Studio, vous pouvez voir et modifier les chemins d’accès de bibliothèque actuels définis dans les pages Propriétés de votre projet. Dans la page Répertoires VC++, choisissez le contrôle déroulant pour la propriété Répertoires de bibliothèque, puis choisissez Modifier. La section Valeur évaluée de la boîte de dialogue Répertoires de bibliothèque répertorie les chemins d’accès actuels recherchés pour les fichiers de bibliothèque. Mettez à jour ces chemins pour pointer vers vos bibliothèques locales.

Bibliothèques du Kit de développement logiciel (SDK) Windows mises à jour

Cette erreur peut se produire lorsque le chemin visual Studio vers le Kit de développement logiciel (SDK) Windows est obsolète. Cela peut se produire si vous installez un sdk Windows plus récent indépendamment du programme d’installation de Visual Studio. Pour le corriger dans l’IDE, mettez à jour les chemins spécifiés dans la page de propriétés répertoires VC++. Définissez la version dans le chemin d’accès pour qu’elle corresponde au nouveau Kit de développement logiciel (SDK). Si vous utilisez l’invite de commandes développeur, mettez à jour le fichier batch qui initialise les variables d’environnement avec les nouveaux chemins du Kit de développement logiciel (SDK). Ce problème peut être évité à l’aide du programme d’installation de Visual Studio pour installer des kits sdk mis à jour.

Impossible d’ouvrir un fichier de bibliothèque tiers

Il existe plusieurs causes courantes pour ce problème :

  • Le chemin d’accès à votre fichier de bibliothèque peut être incorrect ou non encapsulé entre guillemets doubles. Vous n’avez peut-être pas spécifié l’éditeur de liens.

  • Vous avez peut-être installé une version 32 bits de la bibliothèque, mais vous créez pour 64 bits, ou de l’autre façon.

  • La bibliothèque peut avoir des dépendances sur d’autres bibliothèques qui ne sont pas installées.

Pour résoudre un problème de chemin d’accès pour les builds de ligne de commande, vérifiez que la variable d’environnement LIB est définie. Assurez-vous qu’il inclut des chemins d’accès pour toutes les bibliothèques que vous utilisez et pour chaque configuration que vous générez. Dans l’IDE, les chemins de bibliothèque sont définis par la propriété Répertoires de bibliothèques> VC++. Vérifiez que tous les répertoires qui contiennent les bibliothèques dont vous avez besoin sont répertoriés ici, pour chaque configuration que vous générez.

Vous devrez peut-être fournir un répertoire de bibliothèque qui remplace un répertoire de bibliothèque standard. Sur la ligne de commande, utilisez l’option /LIBPATH . Dans l’IDE, utilisez la propriété Répertoires de bibliothèque supplémentaires dans la page de propriétés Générales de l’Éditeur > de propriétés > de configuration pour votre projet.

Veillez à installer chaque version de la bibliothèque dont vous avez besoin pour les configurations que vous générez. Envisagez d’utiliser l’utilitaire de gestion des packages vcpkg pour automatiser l’installation et la configuration de nombreuses bibliothèques courantes. Lorsque vous pouvez, il est préférable de créer vos propres copies de bibliothèques tierces. Vous êtes alors sûr d’avoir toutes les dépendances locales des bibliothèques, générées pour les mêmes configurations que votre projet.

Impossible d’ouvrir un fichier généré par votre projet

Cette erreur peut s’afficher si le nom de fichier n’existe pas encore lorsque l’éditeur de liens tente de l’accéder. Cela peut se produire lorsqu’un projet dépend d’un autre dans la solution, mais que les projets sont générés dans un ordre incorrect. Pour résoudre ce problème, vérifiez que vos références de projet sont définies dans le projet qui utilise le fichier. Ensuite, le fichier manquant est généré avant qu’il ne soit nécessaire. Pour plus d’informations, consultez Ajout de références dans des projets Visual Studio C++ et Gestion des références dans un projet.

Impossible d’ouvrir le fichier 'C :\Program.obj'

Si vous voyez le nom de fichier C :\Program.obj dans le message d’erreur, encapsulez vos chemins de bibliothèque entre guillemets doubles. Cette erreur se produit lorsqu’un chemin d’accès non extrait qui commence par C :\Program Files est transmis à l’éditeur de liens. Les chemins d’accès décompressés peuvent également entraîner des erreurs similaires. En règle générale, ils affichent un fichier .obj inattendu à la racine de votre lecteur.

Pour résoudre ce problème pour les builds de ligne de commande, vérifiez les paramètres d’option /LIBPATH . Vérifiez également les chemins spécifiés dans la variable d’environnement LIB et les chemins spécifiés sur la ligne de commande. Veillez à utiliser des guillemets doubles autour des chemins d’accès qui incluent des espaces.

Pour résoudre ce problème dans l’IDE, ajoutez des guillemets doubles si nécessaire aux propriétés suivantes pour votre projet :

  • Propriété Répertoires de bibliothèque dans la > page de propriétés de configuration VC++ Répertoires,

  • Propriété Répertoires de bibliothèque supplémentaires dans la page de propriétés générales de l’éditeur > de propriétés > de configuration,

  • Propriété Dépendances supplémentaires dans la page de propriétés d’entrée de l’éditeur > de liens > de configuration.

Autres problèmes courants

Problèmes de chemin d’accès ou de nom de fichier

Cette erreur peut se produire lorsque le nom de fichier ou le chemin d’accès de la bibliothèque spécifié à l’éditeur de liens est incorrect. Ou, lorsque le chemin d’accès a une spécification de lecteur non valide. Examinez la ligne de commande ou dans n’importe quelle directive #pragma comment( lib, « library_name » ) pour les problèmes. Vérifiez votre orthographe et l’extension de fichier, puis vérifiez que le fichier existe à l’emplacement spécifié.

Synchronisation de build parallèle

Si vous utilisez une option de génération parallèle, Visual Studio a peut-être verrouillé le fichier sur un autre thread. Pour résoudre ce problème, vérifiez que le même objet ou bibliothèque de code n’est pas intégré à plusieurs projets. Utilisez des dépendances de build ou des références de projet pour récupérer des fichiers binaires générés dans votre projet.

Dépendances supplémentaires spécifiées dans l’IDE

Lorsque vous spécifiez des bibliothèques individuelles dans la propriété Dépendances supplémentaires directement, utilisez des espaces pour séparer les noms de bibliothèques. N’utilisez pas de virgules ou de points-virgules. Si vous utilisez l’élément de menu Modifier pour ouvrir la boîte de dialogue Dépendances supplémentaires, utilisez des lignes de nouvelle ligne pour séparer les noms, et non les virgules, les points-virgules ou les espaces. Utilisez également des nouvelles lignes lorsque vous spécifiez des chemins de bibliothèque dans les répertoires de bibliothèque et les boîtes de dialogue Répertoires de bibliothèque supplémentaires.

Chemins trop longs

Cette erreur peut s’afficher lorsque le chemin d’accès du nom de fichier s’étend à plus de 260 caractères. Si nécessaire, réorganisez votre structure de répertoires ou raccourcissez vos noms de dossiers et de fichiers pour raccourcir les chemins d’accès.

Fichiers trop volumineux

Cette erreur peut se produire, car le fichier est trop volumineux. Les bibliothèques ou les fichiers objet de plus d’un gigaoctet peuvent entraîner des problèmes pour l’éditeur de liens 32 bits. Un correctif possible pour ce problème consiste à utiliser l’ensemble d’outils 64 bits. Pour plus d’informations sur l’utilisation de l’ensemble d’outils 64 bits sur la ligne de commande, consultez Guide pratique pour activer un ensemble d’outils Visual C++ 64 bits sur la ligne de commande. Pour plus d’informations sur l’utilisation de l’ensemble d’outils 64 bits dans l’IDE, consultez Utilisation de MSBuild avec le compilateur et les outils 64 bits. Consultez également ce billet Stack Overflow : Comment faire en sorte que Visual Studio utilise la chaîne d’outils amd64 native.

Autorisations de fichier incorrectes

Cette erreur peut se produire si vous avez des autorisations de fichier insuffisantes pour accéder au nom de fichier. Cela peut se produire si vous utilisez un compte d’utilisateur ordinaire pour accéder aux fichiers de bibliothèque dans des répertoires système protégés. Ou, si vous utilisez des fichiers copiés à partir d’autres utilisateurs qui ont toujours leurs autorisations d’origine définies. Pour résoudre ce problème, déplacez le fichier vers un répertoire de projet accessible en écriture. Si le fichier déplacé dispose d’autorisations inaccessibles, exécutez la commande takeown.exe dans une fenêtre de commande Administrateur pour prendre possession du fichier.

Espace disque insuffisant

L’erreur peut se produire lorsque vous n’avez pas suffisamment d’espace disque. L’éditeur de liens utilise des fichiers temporaires dans plusieurs cas. Même si vous disposez d’un espace disque suffisant, un lien volumineux peut épuiser ou fragmenter l’espace disque disponible. Envisagez d’utiliser l’option /OPT (Optimisations) ; l’élimination comDAT transitive lit plusieurs fois tous les fichiers objet.

Problèmes dans la variable d’environnement TMP

Si le nom de fichier est nommé LNKnnn, il s’agit d’un nom de fichier généré par l’éditeur de liens pour un fichier temporaire. Le répertoire spécifié dans la variable d’environnement TMP n’existe peut-être pas. Ou bien, plusieurs répertoires peuvent être spécifiés pour la variable d’environnement TMP. Un seul chemin d’accès au répertoire doit être spécifié pour la variable d’environnement TMP.

Aide, mon problème n’est pas répertorié ici !

Quand aucun des problèmes répertoriés ici ne s’applique, vous pouvez utiliser les outils de commentaires dans Visual Studio pour obtenir de l’aide. Dans l’IDE, accédez à la barre de menus et choisissez Aide à > envoyer des commentaires > signaler un problème. Vous pouvez également envoyer une suggestion à l’aide de l’aide d’envoyer > des commentaires > pour envoyer une suggestion. Vous pouvez également utiliser le site Q&A Microsoft Learn pour les questions et le site web de la Communauté des développeurs Visual Studio C++. Utilisez ces sites pour rechercher des réponses aux questions et demander de l’aide. Pour plus d’informations, consultez Comment signaler un problème avec l’ensemble d’outils ou la documentation Visual C++.

Si vous avez découvert une nouvelle façon de résoudre ce problème que nous devrions ajouter à cet article, faites-nous savoir. Vous pouvez nous envoyer des commentaires à l’aide du bouton ci-dessous pour cette page. Utilisez-le pour créer un problème dans notre dépôt GitHub de documentation C++. Merci !