Ich habe vor kurzem CodeBlocks mit mingw32 unter Windows 7 Ultimate 32bit installiert, um meine C-Kenntnisse abzuschwächen, aber dieses Problem hat mich etwas ratlos gemacht.
Ich habe beschlossen, einen kurzen Fibonacci-Generator abzufeuern, um sicherzustellen, dass mein Setup funktioniert, aber ich bin auf eine Hürde gestoßen.
Das Programm kompiliert, verlinkt und so weiter und ich bekomme eine entsprechende ausführbare Datei, die wie erwartet läuft.
Die Probleme treten auf, wenn ich erneut versuche zu kompilieren, dann erhalte ich Folgendes:
c:/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/bin/ld.exe: cannot open output file bin\Debug\Fibonacci.exe: Permission denied
Ich kann nicht einmal die Berechtigungen der generierten ausführbaren Datei bearbeiten.
Ich habe die üblichen Verdächtigen überprüft:
Und nun zum Witzigen: In der Regel verschwinden alle von mingw32 generierten ausführbaren Dateien, die dieses Zugriffsverweigerungsverhalten anzeigen, nach einigen Minuten automatisch, ohne dass ich eingreifen muss.
Ich habe das etwas gegoogelt, aber die meisten anderen Ergebnisse waren entweder vage oder nicht anwendbar.
Ich frage mich, ob es eine Windows 7-Sicherheitseinstellung gibt, die mit meiner .exe-Datei Chaos anrichtet, aber ich weiß nicht so genau, wo ich mit der Suche beginnen soll.
Hat jemand irgendwelche Ideen?
Ich hatte genau das gleiche Problem, nachdem ich einige (meiner Meinung nach nicht benötigte) Windows-Dienste ausgeschaltet hatte. Es stellte sich heraus, dass beim erneuten Einschalten der "Application Experience"
alles funktionierte wieder einwandfrei.
Möglicherweise müssen Sie diesen Dienst nur einschalten? So schalten Sie Application Experience ein:
Klicken Sie auf die Windows-Startschaltfläche.
In das Feld "Programme und Dateien suchen" geben Sie services.msc
und klicken Sie auf die Suchschaltfläche. Ein neues Fenster mit dem Titel "Dienste" wird geöffnet.
Klicken Sie mit der rechten Maustaste auf die Zeile "Anwendungserfahrung" und wählen Sie "Eigenschaften" aus dem Popup-Menü.
Ändern Sie den Starttyp in "Automatisch (verzögerter Start)".
Starte den Computer neu.
Anwendungserfahrungen sollen das Problem in Zukunft verhindern.
Wenn Sie der Meinung sind, dass die ausführbare Datei durch einen Prozess gesperrt ist, versuchen Sie es mit Process Explorer von SysInternals. Geben Sie im Feld Datei/Handle Fibonacci.exe ein, und Sie sollten sehen, wer die Datei enthält.
Wenn dies nicht ausreicht, können Sie Process Monitor (erneut von SysInternals) verwenden, um die Aktivität aller Prozesse auf Ihrem System in Fibonacci.exe zu verfolgen. Mit ein wenig Analyse (Aufruflisten) können Sie herausfinden, warum der Zugriff auf die Datei verweigert wird und warum sie nicht mehr angezeigt wird.
Ihr Programm läuft noch. Sie müssen es beenden, indem Sie das Befehlszeilenfenster schließen. Wenn Sie die Strg-Taste oder die Entf-Taste drücken, werden die Prozesse ausgeführt (töten Sie diejenigen, die Ihrem Dateinamen entsprechen).
Die beste Lösung ist, in Eclipse zur Konsole zu gehen IDE und auf rote Taste zu klicken, um das Programm zu beenden. Sie werden sehen, dass Ihr Programm ausgeführt wird und die Ausgabe dort angezeigt wird :) !!
Ich hatte das gleiche Verhalten und habe es behoben, indem ich als Administrator Code :: Blocks ausgeführt habe.
Öffnen Sie den Task-Manager -> Prozesse -> Klicken Sie auf .exe (Fibonacci.exe) -> Prozess beenden
wenn es nicht geht
Schließen Sie Eclipse IDE (oder was auch immer IDE Sie verwenden)) und wiederholen Sie Schritt 1.
Ich hatte ein ähnliches Problem. Mit einem Freeware-Dienstprogramm namens Unlocker (Version 1.9.2) stellte ich fest, dass meine Antivirensoftware (Panda free) die ausführbare Datei blockiert hat, obwohl sie keine Bedrohung erkannt hat. Unlocker konnte es freischalten.
Problem Ursache: Der Prozess des aktuellen Programms läuft noch ohne Unterbrechung. (Dies ist der Grund, warum Sie dieses Problem nach einem Neustart nicht haben.)
Das Update ist einfach: Gehen Sie zu cmd und geben Sie den Befehl taskkill -im process-name.exe -f ein
zB:
taskkill -im demo.exe -f
hier,
demo - ist mein Programmname
Habe das gleiche Problem. Lesen Sie this . Deaktivierte die Antivirensoftware (mcaffee). Et voila
Bestätigt durch das Antivirus-Protokoll:
Blocked by Access Protection rule d:\mingw64\x86_64-w64-mingw32\bin\ld.exe d:\workspace\cpp\bar\foo.exe User-defined Rules:ctx3 Action blocked : Create
ich habe ein ähnliches Problem erlebt. Bitdefender hat jede von MinGW g ++ erstellte exe-Datei automatisch unter Quarantäne gestellt. Anstelle der vollständigen exe-Datei fand ich eine Datei mit der seltsamen Erweiterung 'qzquar' testAutoPtr1.exe.48352.gzquar
Als ich in Bitdefender unter Quarantäne gestellte Objekte geöffnet habe, wurde meine exe-Datei dort unter Quarantäne gestellt.
Ich habe diese Fehlermeldung erhalten, wenn ich den Atom Editor und mingw (über ein Paket namens gpp-compiler
) für C++. Das Schließen des offenen Konsolenfensters hat mein Problem behoben.