webentwicklung-frage-antwort-db.com.de

LINK: schwerwiegender Fehler LNK1104: Datei "D:\...\MyProj.exe" kann nicht geöffnet werden

Bei Verwendung von Visual Studio 2010 erhalte ich beim Erstellen meiner Anwendung in kurzen Intervallen häufig die folgende Fehlermeldung. Wenn ich nur ein oder zwei Minuten warte und es erneut versuche, funktioniert es gut. Unlocker behauptet, dass kein Handle die ausführbare Datei sperrt.
Wie kann ich herausfinden, was es blockiert?
Wenn es sich um Visual Studio handelt, was soll ich tun, damit es aufhört? oder alternativ die Datei freigeben?

1>------ Build started: Project: MyProj, Configuration: Release Win32 ------
...
1>InitializeBuildStatus:
1>  Creating "Release\MyProj.unsuccessfulbuild" because "AlwaysCreate" was specified.
1>ClCompile:
1>  All outputs are up-to-date.
1>  SomeFile1.cpp
1>ResourceCompile:
1>  All outputs are up-to-date.
1>LINK : fatal error LNK1104: cannot open file 'D:\...\MyProj.exe'
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.94
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
45
Jonathan

Hatte dieses Problem nach einer Neuinstallation heute. Stellen Sie sicher, dass der Application Experience-Dienst gestartet ist und nicht deaktiviert ist. Wenn es auf manuell eingestellt ist, glaube ich, dass VS es starten wird.

38
user963228

Wahrscheinlich hatten Sie einen Streu-Build-Prozess, der die ausführbare Datei sperrte, und der Streuprozess wurde nicht bereinigt. In diesem Fall sollten Sie Visual Studio herunterfahren, den Prozess-Explorer öffnen und jeden Prozess, den Sie finden können, im Zusammenhang mit Visual Studio öffnen. .__ Öffnen Sie dann Visual Studio erneut und versuchen Sie, Ihr Projekt neu zu erstellen.

13
C Johnson

Mir ist bewusst, dass dies ziemlich alt ist, aber ich hatte gerade das gleiche Problem mit Visual Studio 2010.

Das Hinzufügen meines Projektpfads zu "Exluded Items" in meinen AVG Anti-Virus-Einstellungen scheint das Problem für mich behoben zu haben.

Deaktivieren Sie alle Antivirus-/Resident-Schilde und prüfen Sie, ob das Problem dadurch behoben wird. Wenn ja, fügen Sie Ihren Projektpfad zu ausgeschlossenen Verzeichnissen in Ihrer AV-Konfiguration hinzu.

11
standrejo

die Datei kann gesperrt werden, da sie gerade ausgeführt wird. Versuchen Sie, den Prozess mit einem Task-Manager zu beenden.

5
Ilya Smagin

Ja, wie Jonathan gesagt hat, kann das Umbenennen helfen, dieses Problem zu umgehen. Z. Ich war gezwungen, das Zielprogramm oft umzubenennen, es ist langweilig und nicht gut.

Das Problem liegt darin, dass wenn Sie Ihr Projekt ausführen und später eine Fehlermeldung erhalten, dass Sie Ihr Projekt nicht erstellen können - es ist so, weil diese ausführbare Datei (Ihr Projekt) noch läuft (Sie können es über den Task-Manager überprüfen.) Wenn Sie den Ziel-Build nur umbenennen, erhalten Sie einige Zeit später denselben Fehler auch bei einem neuen Namen. Wenn Sie einen Task-Manager öffnen, sehen Sie, dass Ihr Abfallsystem mit Ihren noch nicht abgeschlossenen Projekten funktioniert.

Visual Studio für das Erstellen eines neuen Builds muss die vorherige ausführbare Datei entfernen und eine neue anstelle der alten erstellen. Dies ist jedoch nicht möglich, solange die ausführbare Datei noch ausgeführt wird. Wenn Sie also einen neuen Build erstellen möchten, muss der Prozess der alten ausführbaren Datei geschlossen werden! (Es ist seltsam, dass Visual Studio es nicht von alleine schließt und ja, es sieht aus wie ein fehlerhaftes Verhalten).

enter image description here

Es ist etwas mühsam, es manuell zu machen. Sie können also einfach eine bat-Datei anklicken und bei einem solchen Problem einfach darauf klicken:

taskkill /f /im name_of_target_executable.exe

es funktioniert zumindest für mich .. __ Wie eine Vermutung - Ich schließe mein Programm nicht richtig in C++, daher ist es normal, dass Visual Studio es läuft.

ADDITION: Es besteht eine große Chance, da die Anwendung noch nicht abgeschlossen ist. Prüfen Sie, ob Sie am Ende PostQuitMessage aufgerufen haben, um Windows mitzuteilen, dass Sie fertig sind.

4
Tebe

Möglicherweise haben Sie die Ausgabe nicht geschlossen. Schließen Sie die Ausgabe, bereinigen Sie die Datei und erstellen Sie sie neu. Möglicherweise können Sie die Datei jetzt ausführen.

4
Balaji

Ich bin zu dem Schluss gekommen, dass dies eine Art Visual Studio-Fehler ist. Vielleicht hat C Johnson recht - vielleicht hält der Build-Prozess die Datei gesperrt.

Ich habe eine Problemumgehung, die funktioniert. Jedes Mal, wenn dies geschieht, ändere ich den Zielnamen der ausführbaren Datei unter den Eigenschaften des Projekts (klicken Sie mit der rechten Maustaste auf das Projekt und dann auf Eigenschaften\Konfigurationseigenschaften\Allgemein\Zielname).

Auf diese Weise erstellt VS eine neue ausführbare Datei und das Problem wird umgangen. Jedes Mal, wenn ich dies tue, kehre ich zum ursprünglichen Namen zurück und radle durch ~ 3 Namen.

Wenn jemand den Grund dafür und eine Lösung finden wird, antworten Sie bitte und ich kann die Antwort auf Ihre Antwort verschieben, da meine eine Problemumgehung ist.

2
Jonathan

Ich hatte das gleiche Problem, allerdings mit Codeblocks. Wegen dieses Problems habe ich mit dem Programmieren aufgehört, weil ich immer nur meinen Computer aus dem Fenster werfen wollte.

Ich möchte mich bei user963228 bedanken, dessen Antwort wirklich eine Lösung dafür ist. Sie müssen Application Experience für den manuellen Start aktivieren (Sie können dies tun, indem Sie im Startmenü von Windows 7 nach Diensten suchen und dann Application Experience suchen und auf Eigenschaften klicken).

Dieses Problem tritt auf, wenn die Benutzer die Windows 7-Maschine optimieren möchten und einige sinnlose Dienste deaktivieren möchten. In diesem Fall werden einige Optimierungsanleitungen durch Google gebohrt.

Ich denke, dass dieses Problem mit Windows 7 Problem und nicht mit VS-Problem verknüpft sein sollte, und es sollte sichtbarer sein - ich habe lange gebraucht, um diese Lösung zu finden.

Danke noch einmal!

2
Peeter

Ich habe gerade dasselbe Problem mit VS2013 durchlaufen, bei dem Gerätetreiber in C++ erstellt wurden, und keiner der obigen Punkte schien das Problem zu beheben. Ich habe jedoch gerade entdeckt, dass das Problem in meinem Fall mit VMware zu tun zu haben scheint. 

Ich habe einen VMWare-Workstation-Client mit einem freigegebenen Ordner ausgeführt, der auf VM auf meinem gesamten Laufwerk C: definiert ist. Wenn ich die freigegebenen Ordner in den Einstellungen für VM deaktiviert habe, konnte VS2013 meine .exe-Dateien problemlos erstellen. 

Mein neuer Prozess ist: 

1) Deaktivieren Sie den freigegebenen Ordner auf der VM (VM-Einstellungen | Optionen | Freigegebene Ordner - und deaktivieren Sie das Kontrollkästchen) 2) Führen Sie den Build auf dem Host-PC aus 3) Aktivieren Sie den freigegebenen Ordner erneut (und fahren Sie mit fort Dort)

Hoffentlich kann dies jemand anderem helfen.

(Übrigens, die Fehler, die Sie erhalten, sind, dass die EXE-Datei (oder andere Dateien) gesperrt sind oder Administratorberechtigung erfordern, aber das ist ein roter Hering - Ich glaube, dass die VMWare-Freigabe diese Dateien als gesperrt erscheinen lässt.)

1
blairh

Um der Liste eine weitere Lösung hinzuzufügen, habe ich festgestellt, dass Visual Studio (in meinem Fall 2012) Dateien gelegentlich unter verschiedenen Prozessen sperrt.

Bei einem Absturz kann es sein, dass devenv.exe weiterhin ausgeführt wird und die Datei (en) festhält. Alternativ (wie ich gerade festgestellt habe) halten sich vstestrunner oder vstestdiscovery möglicherweise auch an der Datei.

Beenden Sie alle diese Prozesse, um das Problem zu beheben.

1
SJoshi

In der Regel bedeutet dies, dass Ihr Programm gesperrt ist und möglicherweise nicht über den Task-Manager oder den Prozess-Explorer beendet wird. In einem ähnlichen Fall hatte mein Programm während der Ausführung eine Ausnahme und löste die Windows-Fehlerberichterstattung aus, die das Programm sperrte. Für den Fall, dass die Windows-Fehlerberichterstattung das Programm sperrt, können Sie unter Systemsteuerung-> System und Sicherheit-> Aktionscenter-> Einstellungen für die Fehlerberichterstattung die Option "Niemals nach Lösungen suchen" auswählen. Hoffe, es hilft .

1
tkingcer

Meine ist, wenn Sie für die MASM-Auflistungsdatei eine zusätzliche Auswahl treffen, erhalten Sie diesen Fehler. 

Benutz einfach 

 Enable Assembler Generated Code Listing   Yes/Sg
 Assembled Code Listing $(ProjectName).lst

es ist in Ordnung.

Aber haben Sie ein zusätzliches Problem.

0
Dennis Ng

Arbeiten mit Bjarne Stroustrup Programmierprinzipien und -praxis Im Beispiel von C++ "FLTK" habe ich den gleichen Fehler erhalten, aber nach etwa einer Stunde hatte ich eine Idee. Ich verfolgte eine der Bibliotheken, die bereits in Projekteigenschaften -> Linker -> Eingabe -> Zusätzliche Abhängigkeiten zu sehen waren In meinem Fall habe ich die kernel32.lib verfolgt, um zu sehen, wo sie sich befand, und sah, dass sich viele kernel32.lib in verschiedenen Ordnern befanden. Also habe ich angefangen, die FLTK-Bibliotheken in diese Ordner zu kopieren, und die letzte, die ich ausprobiert habe, hat funktioniert. Visual Studio 2013 Express fand die Datei fltkd.lib und der Code funktionierte.

In meinem Fall war die richtige Route C:\Programme (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86

Ich kann nicht diese Route in Visual Studio festlegen.

Nicht sicher, ob dieser Ordner für Windows-Kits erstellt wurde, als ich Microsoft Windows SDK für Windows 7 und .NET Framework 4 (ISO) http://www.Microsoft.com/en-us/download/details.aspx?id= installierte 8442

Hoffe das hilft euch Menschen.

0

Der Fehler kommt (zumindest manchmal) von zu langen Pfaden. In meinem Projekt muss der Ausgabedateipfad einfach reduziert werden.

Anscheinend habe ich die Beschränkung auf 250 Zeichenpfade getroffen.

0
Jesko

Ich hatte gerade das gleiche Problem. Bei mir lief das Exe noch, aber ich konnte es nicht mit dem Task-Manager beenden. Allein durch den Neustart von VS hat es für mich funktioniert.

0
Jan_