Warum tritt beim Kompilieren eines C ++ - Projekts in Visual Studio der schwerwiegende Fehler "LNK1104: Datei 'C: \ Program.obj' kann nicht geöffnet werden" auf?

117

Ich habe in Visual Studio 2008 ein neues C ++ - Projekt erstellt. Es wurde noch kein Code geschrieben. Es wurden nur die Projekteinstellungen geändert.

Wenn ich das Projekt kompiliere, erhalte ich den folgenden schwerwiegenden Fehler:

Schwerwiegender Fehler LNK1104: Datei 'C: \ Program.obj' kann nicht geöffnet werden

Josh Sklare
quelle

Antworten:

153

Dieses spezielle Problem wird durch die Angabe einer Abhängigkeit von einer lib-Datei verursacht, deren Pfad Leerzeichen enthält. Der Pfad muss von Anführungszeichen umgeben sein, damit das Projekt korrekt kompiliert werden kann.

Auf der Registerkarte Konfigurationseigenschaften -> Linker -> Eingabe der Projekteigenschaften befindet sich eine Eigenschaft Zusätzliche Abhängigkeiten . Dieses Problem wurde behoben, indem diese Eigenschaft geändert wurde von:

C: \ Programme \ sofware sdk \ lib \ library.lib

Zu:

"C: \ Programme \ sofware sdk \ lib \ library.lib"

Wo ich die Zitate hinzugefügt habe.

Josh Sklare
quelle
17
Gott, du hast gerade die Verfolgungsjagd von zwei Tagen auf 30 Sekunden gehängt :)
jb.
10
Ich hatte das gleiche Problem. Wenn Ihr Linker korrekt ist, Ihr lib-Verzeichnis jedoch falsch eingestellt ist, kann derselbe Fehler auftreten. Überprüfen Sie unter Konfigurationseigenschaften -> VC ++ - Verzeichnisse -> Bibliotheksverzeichnisse , ob Sie die Bibliothek richtig eingestellt haben. Manchmal besteht der lib-Ordner aus einem x86- und einem x64-Ordner. Sie müssen es auf einen dieser Ordner einstellen (abhängig von Ihrem Compiler) und nicht auf den Ordner, der beide enthält.
M4st3rM1nd
1
Vergessen Sie nicht, danach ein Semikolon einzufügen "C:\Program Files\sofware sdk\lib\library.lib". Das Fehlen eines ;führt auch dazu, dass das Projekt falsch kompiliert wird.
Roscioli
1
Hatte dieses Problem beim Versuch, OpenCV mit Visual Studio 2005 (unter Windows 8.1) zu erstellen ... und es wurde behoben. Toll!
AlainD
1
Ich habe es versucht und es hat bei mir nicht funktioniert. "Qt5Xmld.lib"; "Qt5XmlPatternsd.lib"; "Qt5Cored.lib";% (AdditionalDependencies) -Was soll ich ändern?
STF
65

Dies kann passieren, wenn die Datei ebenfalls noch ausgeführt wird.

: -1: Fehler: LNK1104: Datei 'debug \ ****. Exe' kann nicht geöffnet werden

Carol
quelle
4
das war auch mein problem!
Kamran Bigdely
1
Dies wird dadurch verursacht, dass MS Security Essentials die Datei gesperrt hält.
Synetech
Ja, schloss das vorherige Konsolenfenster und plötzlich konnte die Bibliothek gelesen werden.
Kari
15

Das Problem verschwand für mich nach dem Schließen und erneuten Öffnen von Visual Studio. Ich bin mir nicht sicher, warum das Problem aufgetreten ist, aber das könnte einen Versuch wert sein.

Dies war unter VS 2013 Ultimate, Windows 8.1.

Daniel Neel
quelle
4
ah, Microsoft ... Unser erster Versuch sollte immer in der Nähe sein und wieder öffnen (oder aus- und wieder einschalten) - einige mysteriöse Fehler verschwinden, wenn wir das tun ...
Leonardo Alves Machado
1
Ich bin so beschämend, dass diese Lösung mein Problem lösen kann. Jetzt kann ich nicht mehr nach draußen gehen, um meine Freunde und Familie zu treffen.
JavaLover
2
Sie hatten das gleiche Problem wie Carol.
Amod
10

Stellen Sie außerdem sicher, dass dies nicht aktiviert ist : Konfigurationseigenschaften -> C / C ++ -> Präprozessor -> Vorverarbeitung zu einer Datei .

Assaf Levy
quelle
In meinem Fall war es auch das Problem. Was soll ich tun, wenn ich dieses Flag aktivieren möchte (um die Prepossessed-Datei anzuzeigen)?
Guy Avraham
2
Hier gibt es einige Problemumgehungen: So geben Sie vorverarbeiteten Code aus UND kompilieren ihn (Visual Studio) und hier: Das Kompilieren eines Projekts (VS 2008) mit dem Argument / p (Vorverarbeitung in eine Datei) wird nicht kompiliert . Aber im Grunde ist es eine Compiler-Option, also wird es beides tun, aber nicht beides.
Assaf Levy
4

Ich hatte das gleiche Problem. Es wurde durch ein "," im Namen eines Ordners mit zusätzlichem Bibliothekspfad verursacht. Es wurde durch Ändern des zusätzlichen Bibliothekspfads behoben.

Harsini
quelle
4

Mein Problem war eine fehlende .libErweiterung, gegen die ich gerade verlinkt habe, mylibund VS hat sich entschlossen, danach zu suchen mylib.obj.

Patrizio Bertoni
quelle
3

In meinem Fall handelte es sich um eine fehlgeleitete Referenz. Das Projekt verwies auf die Ausgabe eines anderen Projekts, das letztere gab jedoch nicht die Datei aus, nach der das erstere gesucht hatte.

Newtopian
quelle
3

Lösung 1 (für meinen Fall): Starten Sie den Windows Explorer-Prozess neu (ja, den Windows-Dateimanager).

Lösung 2:

  1. Schließen Sie Visual Studio. Windows-Abmeldung
  2. Melden Sie sich an und öffnen Sie Visual Studio erneut
  3. Bauen Sie wie gewohnt. Es wird jetzt erstellt und kann auf die problematische Datei zugreifen.

Ich gehe davon aus, dass manchmal das Dateisystem oder derjenige, der es kontrolliert, mit seinen Berechtigungen verloren geht. Vor dem Neustart der Windows-Sitzung wurde versucht, Zombie- msbuild32.exeProzesse zu beenden, Visual Studio neu zu starten und zu überprüfen, ob die Problemdatei nicht einmal angezeigt wird. Keine Probleme mit der Build-Konfiguration. Es passiert ab und zu. Einige interne Probleme in Windows werden nicht behoben und müssen neu gestartet werden.

Lissandro
quelle
Ich hatte dieses Problem mit VS2019 ... das hat es behoben ... erstaunlich, dass Fehler bestehen bleiben. thx
JHBonarius
2

Ich hatte den gleichen Fehler, nur mit einem Nuget-Paket, das ich installiert hatte (eines, das nicht nur Header ist) und dann versuchte, es zu deinstallieren.
Was für mich falsch war, war, dass ich immer noch einen Header für das Paket enthielt, das ich gerade in einer meiner CPP-Dateien deinstalliert hatte (ziemlich albern, ja).
Ich habe sogar den zusätzlichen Link zu den Bibliotheksverzeichnissen entfernt Project -> Properties -> Linker -> General, aber natürlich ohne Erfolg, da ich immer noch versucht habe, auf den nicht vorhandenen Header zu verweisen.

Auf jeden Fall eine verwirrende Fehlermeldung in diesem Fall, da der Headername <boost/filesystem.hpp>aber der Fehler mir gab "cannot open file 'llibboost_filesystem-vc140-mt-gd-1_59.lib'"und keine Zeilennummern oder so.

Matthias
quelle
2

Ich hatte das gleiche Problem, aber die Lösung für meinen Fall ist nicht in den Antworten aufgeführt. Mein Antivirenprogramm (AVG) hat die Datei MyProg.exeals Virus ermittelt und in das "Virenspeicher" gestellt. Sie müssen dieses Lager überprüfen und wenn die Datei vorhanden ist, stellen Sie sie einfach wieder her. Es hat mir geholfen.

Nazarii Plebanskii
quelle
1

Bei einem Assembly-Projekt (ProjectName -> Build Dependencies -> Build Customizations -> masm (ausgewählt)) verursachte das Setzen von Prececessed Source Listing auf True das Problem, und das Löschen der Einstellung behebt es. VS2013 hier.

MadeOfAir
quelle
1

Ich habe das gleiche Problem mit dem Linker, der sich über das Fehlen der ausführbaren Hauptdatei beschwert. Dies geschah während unseres Lösungsports auf das neue Visual Studio 2013 . Die Lösung ist eine abwechslungsreiche Mischung aus verwalteten und nicht verwalteten Projekten / Code. Das Problem (und die Lösung) war eine fehlende Datei app.config im Lösungsordner. Es dauerte einen Tag, um dies herauszufinden :(, da das Ausgabeprotokoll nicht sehr hilfreich war.

Nicko Po
quelle
1

Ich habe alle meine Einstellungen gemäß dieser Liste überprüft: http://msdn.microsoft.com/en-us/library/ts7eyw4s.aspx#feedback . Es ist hilfreich für mich und für meine Situation stelle ich fest, dass die Linkabhängigkeit der Projekteigenschaften ein doppeltes Anführungszeichen hat, das nicht vorhanden sein sollte.

David
quelle
0

Ich antworte, weil ich diese spezielle Lösung von niemand anderem aufgelistet sehe.

Anscheinend hat mein Antivirenprogramm (Ad-Aware) eine DLL markiert, von der eines meiner Projekte abhängt, und sie gelöscht. Auch nach dem Ausschließen des Verzeichnisses, in dem sich die DLL befindet, wurde das gleiche Verhalten fortgesetzt, bis ich meinen Computer neu startete.

Easuter
quelle
0

In meinem Fall hatte ich Mathe-Bibliotheksdateien aus einem früheren Game Engine Graphics-Kurs durch GLM ersetzt. Das Problem war, dass ich sie dem Projekt im Projektmappen-Explorer von Visual Studio nicht hinzugefügt habe (obwohl sie sich im Projekt-Repository befanden).

Artorias2718
quelle
0

Ich hatte dieses Problem in Verbindung mit dem LNK2038-Fehler und folgte diesem Beitrag, um die RELEASE- und die DEBUG-DLLs zu trennen. In diesem Prozess hatte ich den gesamten Ordner bereinigt, in dem sich diese Abhängigkeiten befanden.

Zum Glück hatte ich eine Sicherungskopie all dieser Dateien und bekam die Datei, für die dieser Fehler zurückgeworfen wurde, in den DEBUG-Ordner, um das Problem zu beheben. Der Fehlercode war in gewisser Weise irreführend, da ich viel Zeit aufwenden musste, um von einer der Antworten aus diesem Beitrag erneut zu diesem Tipp zu gelangen.

Hoffe diese Antwort hilft jemandem in Not.

N00b Pr0grammer
quelle
0

Ich habe es gelöst, indem ich ein vorhandenes Projekt hinzugefügt habe zu meiner Lösung , die ich hinzufügen vergessen haben , in der ersten Zeit.

Markus Weber
quelle
0

Ich hatte den gleichen Fehler:

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

Dies wurde durch die ;am Ende verursacht. Wenn Sie mehrere Bibliotheken haben, sollten diese durch ein Leerzeichen (Leertaste), kein Komma oder Semikolon getrennt werden!

Verwenden Sie also ;nichts anderes, wenn Sie Bibliotheken in auflistenProject properties >> Configuration Properties >> Linker >> Input

zar
quelle
0

Ich habe die obige Lösung ausprobiert, aber bei mir nicht funktioniert. Also benenne ich die Exe um und erstelle die Lösung neu. Für mich geht das.

user3500315
quelle
0

Ich hatte genau diesen Fehler beim Erstellen einer VC ++ - DLL in Visual Studio 2019:

LNK1104: Datei 'C: \ Program.obj' kann nicht geöffnet werden

Es stellte sich heraus, dass ich unter Projekteigenschaften> Linker> Eingabe> Moduldefinitionsdatei eine Def-Datei angegeben hatte, die am Ende des Dateinamens ein nicht übereinstimmendes Anführungszeichen hatte . Durch Löschen des nicht übereinstimmenden doppelten Anführungszeichens wurde das Problem behoben.

MikeOnline
quelle
0

Getötet msbuild32.exeund wieder aufgebaut. Es hat bei mir funktioniert.

Imad
quelle
-1

Ich habe das gleiche Problem mit "Visual Studio 2013".

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

Es wurde nach dem Schließen und Neustarten von Visual Studio behoben.

user3860869
quelle
-3

Ich hatte das gleiche Problem, ich habe gerade den Code in ein neues Projekt kopiert und den Build gestartet. Ein anderer Fehler trat auf. Fehler C4996: 'fopen': Diese Funktion oder Variable ist möglicherweise unsicher. Verwenden Sie stattdessen fopen_s

Um dieses Problem erneut zu lösen, habe ich meine eine Eigenschaft wie folgt in das Projektprojekt eingefügt. Projekt -> Eigenschaften -> Konfigurationseigenschaft -> c / c ++. In dieser Kategorie gibt es Feldnamen Präprozessor-Definitionen Ich habe _CRT_SECURE_NO_WARNINGS hinzugefügt, um das Problem zu lösen. Hoffe, es wird helfen ...

Danke

Sunil
quelle
Diese Antwort hat keine Beziehung zum ursprünglichen Beitrag.
Zar
Ganz zu schweigen davon, dass das Deaktivieren der Sicherheitsfunktionen nicht gerade eine gute Idee ist
Matti Virkkunen