Linkertoolfehler LNK1104

Datei 'Dateiname' kann nicht geöffnet werden.

Dieser Fehler wird gemeldet, wenn der Linker eine Datei nicht öffnen kann, entweder zum Lesen oder zum Schreiben. Die beiden häufigsten Ursachen des Problems sind:

  • Ihr Programm wird bereits ausgeführt oder im Debugger geladen und

  • Ihre Bibliothekspfade sind falsch oder werden nicht in doppelte Anführungszeichen eingeschlossen.

Für diesen Fehler gibt es viele andere mögliche Ursachen. Um sie einzugrenzen, überprüfen Sie zuerst, welche Art von Dateiname ist. Verwenden Sie dann die folgenden Abschnitte, um das spezifische Problem zu identifizieren und zu beheben.

Ihre App oder ihre PDB-Datei kann nicht geöffnet werden.

Ihre App wird ausgeführt oder im Debugger geladen.

Wenn der Dateiname der Name Ihrer ausführbaren Datei oder eine zugehörige PDB-Datei ist, überprüfen Sie, ob Ihre Anwendung bereits ausgeführt wird. Überprüfen Sie dann, ob sie in einen Debugger geladen wird. Um dieses Problem zu beheben, beenden Sie das Programm, und entladen Sie es aus dem Debugger, bevor Sie es erneut erstellen. Wenn die App in einem anderen Programm geöffnet ist, z. B. in einem Ressourcen-Editor, schließen Sie sie. Wenn Ihr Programm nicht reagiert, müssen Sie möglicherweise den Task-Manager verwenden, um den Prozess zu beenden. Möglicherweise müssen Sie Visual Studio auch schließen und neu starten.

Ihre App ist durch einen Antivirusscan gesperrt.

Antivirenprogramme blockieren häufig vorübergehend den Zugriff auf neu erstellte Dateien, insbesondere AUSFÜHRBARE DATEIEN .exe und DLL ausführbare Dateien. Um dieses Problem zu beheben, versuchen Sie, die Projektbuildverzeichnisse vom Antivirenscanner auszuschließen.

Eine Microsoft-Bibliotheksdatei kann nicht geöffnet werden.

Windows-Bibliotheken, z. B. kernel32.lib

Wenn die Datei, die nicht geöffnet werden kann, eine der standardbibliotheksdateien ist, die von Microsoft bereitgestellt werden, z . B. kernel32.lib, liegt möglicherweise ein Projektkonfigurationsfehler oder ein Installationsfehler vor. Überprüfen Sie, ob das Windows SDK installiert ist. Wenn Für Ihr Projekt andere Microsoft-Bibliotheken erforderlich sind, z. B. MFC, stellen Sie sicher, dass die MFC-Komponenten auch vom Visual Studio-Installationsprogramm installiert wurden. Sie können das Installationsprogramm erneut ausführen, um optionale Komponenten jederzeit hinzuzufügen. Weitere Informationen finden Sie unter Ändern von Visual Studio. Verwenden Sie die Registerkarte "Einzelne Komponenten " im Installationsprogramm, um bestimmte Bibliotheken und SDKs auszuwählen.

Versionsierte vcruntime-Bibliotheken

Wenn die Fehlermeldung über eine versionsierte Microsoft-Bibliothek wie msvcr120.lib verfügt, ist das Plattformtoolset für diese Compilerversion möglicherweise nicht installiert. Um dieses Problem zu beheben, haben Sie zwei Optionen: Aktualisieren Sie das Projekt, um das aktuelle Plattformtoolset zu verwenden, oder installieren Sie das ältere Toolset, und erstellen Sie das Projekt unverändert. Weitere Informationen finden Sie unter Aktualisieren von Projekten aus früheren Versionen von Visual C++ und Verwenden nativer Multiadressierung in Visual Studio zum Erstellen alter Projekte.

Einzelhandels-, Debug- oder plattformspezifische Bibliotheken

Der Fehler kann auftreten, wenn Sie zum ersten Mal eine neue Zielplattform oder -konfiguration erstellen, z. B. Retail oder ARM64. Überprüfen Sie in der IDE, ob das plattformtoolset und die windows SDK-Version auf der Seite "Allgemein" installiert sind. Überprüfen Sie außerdem, ob die erforderlichen Bibliotheken in den Bibliotheksverzeichnissen verfügbar sind, die in der VC++-Eigenschaftenseite für Verzeichnisse angegeben sind. Überprüfen Sie die Eigenschaften für jede Konfiguration, z. B. Debug, Retail, x86 oder ARM64. Wenn ein Build funktioniert, aber kein anderer funktioniert, vergleichen Sie die Einstellungen für beide. Installieren Sie alle fehlenden erforderlichen Tools und Bibliotheken.

Die bibliothek vccorlib.lib

Für UWP-Apps (Universelle Windows-Apps oder -Komponenten) gibt es keine spectre-entschärften Bibliotheken. Wenn die Fehlermeldung vccorlib.lib enthält, haben Sie möglicherweise in einem UWP-Projekt aktiviert/Qspectre. Deaktivieren Sie die /Qspectre Compileroption, um dieses Problem zu beheben. Ändern Sie in Visual Studio die Spectre Mitigation-Eigenschaft . Sie befindet sich auf der Seite "C/C++>-Codegenerierung" des Dialogfelds "Eigenschaftenseiten" des Projekts.

Bibliotheken in Projekten aus Online- oder anderen Quellen

Wenn Sie ein Projekt erstellen, das von einem anderen Computer kopiert wurde, unterscheiden sich möglicherweise die Speicherorte der Bibliotheksinstallation. Überprüfen Sie bei Befehlszeilenbuilds, ob die LIB-Umgebungsvariable und Bibliothekspfade für den Build ordnungsgemäß festgelegt sind. In Visual Studio können Sie die aktuellen Bibliothekspfade anzeigen und bearbeiten, die auf den Eigenschaftenseiten für Ihr Projekt festgelegt sind. Wählen Sie auf der Seite "VC++-Verzeichnisse " das Dropdownsteuerelement für die Eigenschaft "Bibliotheksverzeichnisse " und dann " Bearbeiten" aus. Im Abschnitt "Ausgewerteter Wert " des Dialogfelds "Bibliotheksverzeichnisse " werden die aktuellen Pfade aufgelistet, die nach Bibliotheksdateien gesucht werden. Aktualisieren Sie diese Pfade, um auf Ihre lokalen Bibliotheken zu verweisen.

Aktualisierte Windows SDK-Bibliotheken

Dieser Fehler kann auftreten, wenn der Visual Studio-Pfad zum Windows SDK veraltet ist. Dies kann passieren, wenn Sie ein neueres Windows SDK unabhängig vom Visual Studio-Installationsprogramm installieren. Um es in der IDE zu beheben, aktualisieren Sie die Pfade, die auf der Eigenschaftenseite "VC++-Verzeichnisse" angegeben sind. Legen Sie die Version im Pfad fest, die mit dem neuen SDK übereinstimmt. Wenn Sie die Entwickler-Eingabeaufforderung verwenden, aktualisieren Sie die Batchdatei, die die Umgebungsvariablen mit den neuen SDK-Pfaden initialisiert. Dieses Problem kann vermieden werden, indem das Visual Studio-Installationsprogramm zum Installieren aktualisierter SDKs verwendet wird.

Eine Bibliotheksdatei eines Drittanbieters kann nicht geöffnet werden.

Für dieses Problem gibt es mehrere häufige Ursachen:

  • Der Pfad zu Ihrer Bibliotheksdatei ist möglicherweise falsch oder nicht in doppelte Anführungszeichen eingeschlossen. Oder Sie haben sie möglicherweise nicht für den Linker angegeben.

  • Möglicherweise haben Sie eine 32-Bit-Version der Bibliothek installiert, aber Sie erstellen 64 Bits oder umgekehrt.

  • Die Bibliothek verfügt möglicherweise über Abhängigkeiten von anderen Bibliotheken, die nicht installiert sind.

Um ein Pfadproblem für Befehlszeilenbuilds zu beheben, überprüfen Sie, ob die LIB-Umgebungsvariable festgelegt ist. Stellen Sie sicher, dass sie Pfade für alle verwendeten Bibliotheken und für jede konfiguration enthält, die Sie erstellen. In der IDE werden die Bibliothekspfade von der Vc++>-Bibliotheksverzeichnisse-Eigenschaft festgelegt. Stellen Sie sicher, dass alle Verzeichnisse, die die benötigten Bibliotheken enthalten, hier für jede konfiguration aufgeführt sind, die Sie erstellen.

Möglicherweise müssen Sie ein Bibliotheksverzeichnis angeben, das ein Standardbibliotheksverzeichnis überschreibt. Verwenden Sie in der Befehlszeile die /LIBPATH Option. Verwenden Sie in der IDE die Eigenschaft "Zusätzliche Bibliotheksverzeichnisse " auf der Eigenschaftenseite "Configuration Properties >> General " für Ihr Projekt.

Stellen Sie sicher, dass Sie jede Version der Bibliothek installieren, die Sie für die konfigurationen benötigen, die Sie erstellen. Erwägen Sie die Verwendung des vcpkg-Paketverwaltungsprogramms , um die Installation und Einrichtung für viele gängige Bibliotheken zu automatisieren. Wenn möglich, ist es am besten, Eigene Kopien von Drittanbieterbibliotheken zu erstellen. Dann sind Sie sicher, dass alle lokalen Abhängigkeiten der Bibliotheken für die gleichen Konfigurationen wie Ihr Projekt erstellt werden.

Eine datei, die von Ihrem Projekt erstellt wurde, kann nicht geöffnet werden.

Möglicherweise wird dieser Fehler angezeigt, wenn der Dateiname noch nicht vorhanden ist, wenn der Linker versucht, darauf zuzugreifen. Dies kann passieren, wenn ein Projekt von einem anderen in der Projektmappe abhängt, aber die Projekte in der falschen Reihenfolge erstellen. Um dieses Problem zu beheben, stellen Sie sicher, dass Ihre Projektverweise im Projekt festgelegt sind, das die Datei verwendet. Anschließend wird die fehlende Datei erstellt, bevor sie erforderlich ist. Weitere Informationen finden Sie unter Hinzufügen von Verweisen in Visual Studio C++-Projekten und verwalten von Verweisen in einem Projekt.

Die Datei "C:\Program.obj" kann nicht geöffnet werden.

Wenn der Dateiname C:\Program.obj in der Fehlermeldung angezeigt wird, schließen Sie die Bibliothekspfade in doppelte Anführungszeichen um. Dieser Fehler tritt auf, wenn ein nicht zugewiesener Pfad, der mit C:\Program Files beginnt, an den Linker übergeben wird. Nicht angewendete Pfade können auch ähnliche Fehler verursachen. In der Regel zeigen sie eine unerwartete OBJ-Datei im Stammverzeichnis Ihres Laufwerks an.

Um dieses Problem für Befehlszeilenbuilds zu beheben, überprüfen Sie die /LIBPATH-Optionsparameter . Überprüfen Sie außerdem die in der LIB-Umgebungsvariablen angegebenen Pfade und die pfade, die in der Befehlszeile angegeben sind. Achten Sie darauf, doppelte Anführungszeichen für alle Pfade zu verwenden, die Leerzeichen enthalten.

Um dieses Problem in der IDE zu beheben, fügen Sie bei Bedarf doppelte Anführungszeichen zu den folgenden Eigenschaften für Ihr Projekt hinzu:

  • The Library Directories property on the Configuration Properties > VC++ Directories property page,

  • The Additional Library Directories property in the Configuration Properties > Linker > General property page,

  • The Additional Dependencies property in the Configuration Properties > Linker > Input property page.

Andere häufige Probleme

Pfad- oder Dateinamenprobleme

Dieser Fehler kann auftreten, wenn der für den Linker angegebene Bibliotheksdateiname oder Pfad falsch ist. Oder wenn der Pfad über eine ungültige Laufwerkspezifikation verfügt. Suchen Sie in der Befehlszeile oder in einer beliebigen #pragma kommentar( lib, "library_name" ) Direktive auf Probleme. Überprüfen Sie die Rechtschreibung und die Dateierweiterung, und überprüfen Sie, ob die Datei am angegebenen Speicherort vorhanden ist.

Parallele Buildsynchronisierung

Wenn Sie eine parallele Buildoption verwenden, hat Visual Studio die Datei möglicherweise in einem anderen Thread gesperrt. Um dieses Problem zu beheben, überprüfen Sie, ob dasselbe Codeobjekt oder dieselbe Bibliothek nicht in mehreren Projekten integriert ist. Verwenden Sie Buildabhängigkeiten oder Projektverweise, um integrierte Binärdateien in Ihrem Projekt aufzunehmen.

Zusätzliche Abhängigkeiten, die in der IDE angegeben sind

Wenn Sie einzelne Bibliotheken in der Eigenschaft "Zusätzliche Abhängigkeiten " direkt angeben, verwenden Sie Leerzeichen, um die Bibliotheksnamen zu trennen. Verwenden Sie keine Kommas oder Semikolons. Wenn Sie das Menüelement "Bearbeiten " verwenden, um das Dialogfeld "Zusätzliche Abhängigkeiten " zu öffnen, verwenden Sie Newlines, um die Namen, keine Kommas, Semikolons oder Leerzeichen zu trennen. Verwenden Sie auch Neuelines, wenn Sie Bibliothekspfade in den Dialogfeldern "Bibliotheksverzeichnisse " und "Zusätzliche Bibliotheksverzeichnisse " angeben.

Pfade, die zu lang sind

Dieser Fehler wird möglicherweise angezeigt, wenn der Pfad für den Dateinamen auf mehr als 260 Zeichen erweitert wird. Ordnen Sie bei Bedarf die Verzeichnisstruktur neu an, oder kürzen Sie die Ordner- und Dateinamen, um die Pfade zu kürzen.

Dateien, die zu groß sind

Dieser Fehler kann auftreten, da die Datei zu groß ist. Bibliotheken oder Objektdateien mit mehr als einem Gigabyte größe können Probleme für den 32-Bit-Linker verursachen. Eine mögliche Lösung für dieses Problem besteht darin, das 64-Bit-Toolset zu verwenden. Weitere Informationen zur Verwendung des 64-Bit-Toolsets in der Befehlszeile finden Sie unter How to: Enable a 64-Bit Visual C++ Toolset on the Command Line. Informationen zur Verwendung des 64-Bit-Toolsets in der IDE finden Sie unter Verwenden von MSBuild mit dem 64-Bit-Compiler und den Tools. Sehen Sie sich auch diesen Stack Overflow-Beitrag an: Verwenden der systemeigenen amd64-Toolkette in Visual Studio.

Falsche Dateiberechtigungen

Dieser Fehler kann auftreten, wenn Sie über unzureichende Dateiberechtigungen für den Zugriff auf dateinamen verfügen. Dies kann passieren, wenn Sie ein normales Benutzerkonto verwenden, um auf Bibliotheksdateien in geschützten Systemverzeichnissen zuzugreifen. Oder wenn Sie Dateien verwenden, die von anderen Benutzern kopiert wurden, die noch ihre ursprünglichen Berechtigungen festgelegt haben. Um dieses Problem zu beheben, verschieben Sie die Datei in ein schreibbares Projektverzeichnis. Wenn die verschobene Datei über unzugängliche Berechtigungen verfügt, führen Sie den Befehl takeown.exe in einem Administrator-Befehlsfenster aus, um den Besitz der Datei zu übernehmen.

Unzureichender Speicherplatz

Der Fehler kann auftreten, wenn Sie nicht über genügend Speicherplatz verfügen. Der Linker verwendet im verschiedenen Fällen temporäre Dateien. Auch wenn Sie über ausreichend Speicherplatz verfügen, kann ein großer Link den verfügbaren Speicherplatz leeren oder fragmentieren. Erwägen Sie die Verwendung der Option /OPT (Optimierungen). Durch die transitive COMDAT-Eliminierung werden alle Objektdateien mehrmals gelesen.

Probleme in der TMP-Umgebungsvariable

Wenn der Dateiname "LNKnnn" lautet, handelt es sich um einen Dateinamen, der vom Linker für eine temporäre Datei generiert wird. Das in der TMP-Umgebungsvariable angegebene Verzeichnis ist möglicherweise nicht vorhanden. Oder mehrere Verzeichnisse können für die TMP-Umgebungsvariable angegeben werden. Für die TMP-Umgebungsvariable sollte nur ein Verzeichnispfad angegeben werden.

Hilfe, mein Problem ist hier nicht aufgeführt!

Wenn keines der hier aufgeführten Probleme zutrifft, können Sie die Feedbacktools in Visual Studio verwenden, um Hilfe zu erhalten. Wechseln Sie in der IDE zur Menüleiste, und wählen Sie "Feedbackbericht über Hilfe >> senden" aus. Oder senden Sie einen Vorschlag mithilfe von "Feedback senden per Hilfe > senden > " einen Vorschlag. Sie können auch die Microsoft Learn Q&A-Website für Fragen und die Visual Studio C++-Entwicklercommunity-Website verwenden. Verwenden Sie diese Websites, um nach Antworten auf Fragen zu suchen und Hilfe zu erhalten. Weitere Informationen finden Sie unter "So wird's gemacht: Melden eines Problems mit dem Visual C++-Toolset oder der Dokumentation".

Wenn Sie eine neue Möglichkeit gefunden haben, dieses Problem zu beheben, das wir diesem Artikel hinzufügen sollten, teilen Sie uns dies mit. Sie können uns Feedback senden, indem Sie die schaltfläche unten für diese Seite verwenden. Verwenden Sie es, um ein neues Problem in unserer C++-Dokumentation GitHub-Repository zu erstellen. Vielen Dank!