Pourquoi l'erreur fatale «LNK1104: impossible d'ouvrir le fichier« C: \ Program.obj »» se produit-elle lorsque je compile un projet C ++ dans Visual Studio?


117

J'ai créé un nouveau projet C ++ dans Visual Studio 2008. Aucun code n'a encore été écrit; Seuls les paramètres du projet ont été modifiés.

Lorsque je compile le projet, je reçois l'erreur fatale suivante:

erreur fatale LNK1104: impossible d'ouvrir le fichier 'C: \ Program.obj'

Réponses:


153

Ce problème particulier est causé par la spécification d'une dépendance à un fichier lib contenant des espaces dans son chemin. Le chemin doit être entouré de guillemets pour que le projet se compile correctement.

Dans l' onglet Propriétés de configuration -> Éditeur de liens -> Entrée des propriétés du projet, il existe une propriété Dépendances supplémentaires . Ce problème a été résolu en modifiant cette propriété de:

C: \ Program Files \ sofware sdk \ lib \ library.lib

À:

"C: \ Program Files \ sofware sdk \ lib \ library.lib"

Où j'ai ajouté les citations.


17
Dieu que vous venez de suspendre la chasse aux bogues de deux jours à 30 secondes :)
jb.

10
J'ai eu le même problème. Si votre éditeur de liens est correct mais que votre répertoire lib est défini de manière incorrecte, la même erreur peut survenir. Essayez de regarder dans Propriétés de configuration -> Répertoires VC ++ -> Répertoires de bibliothèque pour voir si vous avez correctement défini la bibliothèque. Parfois, le dossier lib se compose d'un dossier x86 et d'un dossier x64. Vous devez le définir sur l'un de ceux-ci (en fonction de votre compilateur) plutôt que sur le dossier contenant les deux.
M4st3rM1nd

1
N'oubliez pas de mettre un point-virgule après "C:\Program Files\sofware sdk\lib\library.lib". L'absence de a ;entraînera également une compilation incorrecte du projet.
roscioli

1
J'ai eu ce problème en essayant de créer OpenCV à l'aide de Visual Studio 2005 (sous Windows 8.1) ... et cela l'a résolu. Génial!
AlainD

1
Je l'ai essayé et cela n'a pas fonctionné pour moi. "Qt5Xmld.lib"; "Qt5XmlPatternsd.lib"; "Qt5Cored.lib";% (AdditionalDependencies) -Que dois-je modifier?
STF

65

Cela peut se produire si le fichier est toujours en cours d'exécution.

: -1: erreur: LNK1104: impossible d'ouvrir le fichier 'debug \ ****. Exe'


4
c'était aussi mon problème!
Kamran Bigdely

1
Cela est dû au fait que MS Security Essentials maintient le fichier verrouillé.
Synetech

oui, fermé la fenêtre de la console précédente et soudainement la lib peut être lue.
Kari

15

Le problème a disparu pour moi après la fermeture et la réouverture de Visual Studio. Je ne sais pas pourquoi le problème est survenu, mais cela vaut peut-être la peine d'être essayé.

C'était sur VS 2013 Ultimate, Windows 8.1.


4
ah, Microsoft ... Notre premier essai devrait toujours être fermé et rouvrir (ou éteindre et rallumer) - plusieurs bugs mystérieux disparaissent lorsque nous faisons cela ...
Leonardo Alves Machado

1
Je me sens tellement honteux que cette solution puisse résoudre mon problème. Maintenant, je ne peux plus sortir pour rencontrer mes amis et ma famille.
javaLover

2
Vous avez eu le même problème que Carol.
amod le

10

Vérifiez également que vous ne l'avez pas activé: Propriétés de configuration -> C / C ++ -> Préprocesseur -> Prétraitement vers un fichier .


Dans mon cas, c'était aussi le problème, mais que dois-je faire si je souhaite activer cet indicateur (afin d'afficher le fichier Prepossessed)?
Guy Avraham

2
Vous avez quelques solutions de contournement ici: Comment sortir du code prétraité ET le compiler (Visual Studio) et ici: Compiler un projet (VS 2008) avec l'argument / p (prétraiter vers un fichier) ne se compile pas . Mais c'est essentiellement une option du compilateur donc il fera l'un ou l'autre mais pas les deux.
Assaf Levy le

4

J'ai eu le même problème. Il était causé par un "," dans le nom d'un dossier de chemin de bibliothèque supplémentaire. Il a été résolu en changeant le chemin de bibliothèque supplémentaire.


4

Mon problème était une .libextension manquante , je faisais juste un lien mylibet VS a décidé de chercher mylib.obj.


3

Dans mon cas, il s'agissait d'une référence mal orientée. Project faisait référence à la sortie d'un autre projet, mais ce dernier n'a pas produit le fichier où le premier cherchait.


3

Solution 1 (pour mon cas): redémarrez le processus Windows Explorer (oui, le gestionnaire de fichiers Windows).

Solution 2:

  1. Fermez Visual Studio. Déconnexion Windows
  2. Connectez-vous, rouvrez Visual Studio
  3. Construisez comme d'habitude. Il se construit maintenant et peut accéder au fichier problématique.

Je suppose que parfois le système de fichiers ou quiconque le contrôle se perd avec ses autorisations. Avant de redémarrer la session Windows, essayé de tuer les msbuild32.exeprocessus zombie , redémarrez Visual Studio, ne cochez aucune même en affichant le fichier problématique. Aucun problème de configuration de construction. Cela arrive de temps en temps. Une chose interne dans Windows ne résout pas, nécessite un redémarrage.


J'ai eu ce problème avec VS2019 ... cela l'a corrigé ... incroyable que les bogues persistent. thx
JHBonarius

2

J'ai eu la même erreur, juste avec un package Nuget que j'avais installé (un qui n'est pas seulement un en-tête), puis j'ai essayé de désinstaller.
Ce qui n'allait pas pour moi, c'est que j'incluais toujours un en-tête pour le package que je viens de désinstaller dans l'un de mes fichiers .cpp (assez idiot, oui).
J'ai même supprimé le lien vers les répertoires de bibliothèques supplémentaires Project -> Properties -> Linker -> General, mais bien sûr en vain, car j'essayais toujours de référencer l'en-tête inexistant.

Certainement un message d'erreur déroutant dans ce cas, car le nom de l'en-tête était <boost/filesystem.hpp>mais l'erreur m'a donné "cannot open file 'llibboost_filesystem-vc140-mt-gd-1_59.lib'"et aucun numéro de ligne ou quoi que ce soit.


2

J'ai eu le même problème, mais la solution pour mon cas n'est pas répertoriée dans les réponses. Mon programme antivirus (AVG) a déterminé que le fichier MyProg.exeétait un virus et l'a mis dans le «magasin de virus». Vous devez vérifier cet entrepôt et si le fichier est là - alors restaurez-le simplement. Cela m'a aidé.


1

Pour un projet d'assemblage (ProjectName -> Build Dependencies -> Build Customizations -> masm (selected)), la définition de Generate Preprocessed Source Listing sur True a également causé le problème pour moi, effaçant le paramètre l'a corrigé. VS2013 ici.


1

Je rencontre le même problème avec l'éditeur de liens se plaignant de l'exécutable principal manquant. Cela s'est produit lors de notre port de solution vers le nouveau Visual Studio 2013 . La solution est un mélange varié de projets / codes gérés et non gérés. Le problème (et le correctif) a fini par être un fichier app.config manquant dans le dossier de la solution. Il a fallu une journée pour comprendre celui-ci :(, car le journal de sortie n'était pas très utile.



0

Je réponds parce que je ne vois cette solution particulière répertoriée par personne d'autre.

Apparemment, mon antivirus (Ad-Aware) signalait une DLL dont dépend un de mes projets et la supprimait. Même après avoir exclu le répertoire où réside la DLL, le même comportement a continué jusqu'à ce que je redémarre mon ordinateur.


0

Dans mon cas, j'avais remplacé les fichiers de bibliothèque mathématique d'un précédent cours Game Engine Graphics par GLM. Le problème était que je ne les ai pas ajoutés au projet dans l'Explorateur de solutions de Visual Studio (même s'ils étaient dans le référentiel du projet).


0

J'ai eu ce problème en conjonction avec l'erreur LNK2038, j'ai suivi ce post pour séparer les DLL RELEASE et DEBUG. Dans ce processus, j'avais nettoyé tout le dossier où résidaient ces dépendances.

Heureusement, j'avais une sauvegarde de tous ces fichiers et j'ai récupéré le fichier pour lequel cette erreur était renvoyée dans le dossier DEBUG pour résoudre le problème. Le code d'erreur était trompeur d'une certaine manière, car j'ai dû passer beaucoup de temps pour revenir à cette astuce à partir de l'une des réponses de ce message.

J'espère que cette réponse aide quelqu'un dans le besoin.


0

Je l'ai résolu en ajoutant un projet existant à ma solution , que j'ai oublié d'ajouter dans un premier temps.


0

J'ai eu la même erreur:

fatal error LNK1104: cannot open file 'GTest.lib;'

Cela a été causé par ;la fin. Si vous avez plusieurs bibliothèques, elles doivent être séparées par un espace vide (barre d'espace), pas de virgule ni de point-virgule!

Alors n'utilisez pas ;ou quoi que ce soit d'autre lors de la liste des bibliothèquesProject properties >> Configuration Properties >> Linker >> Input


0

J'ai essayé la solution ci-dessus mais n'a pas fonctionné pour moi. Donc, je renomme l'exe et reconstruit la solution. Ça marche pour moi.


0

J'ai eu cette erreur exacte lors de la création d'une DLL VC ++ dans Visual Studio 2019:

LNK1104: impossible d'ouvrir le fichier 'C: \ Program.obj'

Il s'est avéré que sous Propriétés du projet> Éditeur de liens> Entrée> Fichier de définition de module, j'avais spécifié un fichier def qui avait un guillemet double sans correspondance à la fin du nom de fichier. La suppression du guillemet double sans correspondance a résolu le problème.


0

Tué msbuild32.exeet reconstruit. Cela a fonctionné pour moi.


-1

J'ai rencontré le même problème avec «Visual Studio 2013».

LNK1104: cannot open file 'debug\****.exe

Il s'est résolu après la fermeture et le redémarrage de Visual Studio.


-3

J'avais le même problème, je viens de copier le code dans un nouveau projet et j'ai commencé la construction. Une autre erreur a commencé à arriver. erreur C4996: «fopen»: cette fonction ou variable peut être dangereuse. Pensez à utiliser fopen_s à la place

Pour résoudre à nouveau ce problème, j'ai ajouté ma propriété dans le projet Project comme ci-dessous. Projet -> Propriétés -> Propriété de configuration -> c / c ++. Dans cette catégorie, il y a le nom du champ Définitions du préprocesseur J'ai ajouté _CRT_SECURE_NO_WARNINGS ceci pour résoudre le problème J'espère que cela aidera ...

Merci


Cette réponse n'a aucun rapport avec la poste d'origine.
zar

Sans oublier que la désactivation des fonctionnalités de sécurité n'est pas vraiment une bonne idée
Matti Virkkunen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.