GCC Fehler beheben C++?

3 Antworten

Das Problem scheint zu sein, dass der Linker sein Outputfile a.exe nicht schreiben kann. Vermutlich ist das current work directory, mit welchem der Linker aufgerufen wird schreibgeschützt für den eingeloggten User. Du müsstest herausfinden, wohin er a.exe schreiben will. Das findest Du vermutlich mit dem Utility "procmon" heraus.

Vermutlich kannst Du das Work-Directory irgendwo im Visual Studio Code einstellen.

Ansonsten würde ich mal explizit den Outputfilepfad mit "-o" angeben.

g++ -o C:\Mein_Verzeichnis\helloworld.exe helloworld.cpp

Ich weiss aber nicht, ob das so mit dem Visual Studio zusammen spielt. Es muss ja nachher die erzeugte exe-Datei finden...

Wenn ich die Kommandozeile als Administrator ausführe, funktioniert das ganze

Gut. Aber dann liegt da eine Datei a.exe, die dem Administrator gehört. Und jetzt kommst Du als normaler Nutzer und willst diese Datei überschreiben. Das geht nicht mal unter Windows! Abhilfe:

  1. Lösche Windows und installiere MS-DOS. Da geht das :-)
  2. oder wende Dich an Deinen Administrator. Der soll die Datei löschen und Dir Schreibrechte in diesem Verzeichnis geben.

Kann es sein, dass du dem Compiler den Speicherort der erstellten Executable explizit mitgeben musst und er sie sonst im eigenen Verzeichnis zu erstellen versucht, für das offenbar die höheren Rechte notwendig sind? Möglicherweise interessiert ihn die Variable TEMP dabei nicht.

In welchem Verzeichnis befindest du dich während der Ausführung des Befehls, und wo landet die Datei a.exe bei Nutzung der Adminrechte?


DaveRV 
Beitragsersteller
 22.12.2021, 12:27

Meine helloworld.cpp liegt im Verzeichnis C:\Users\BENUTZERNAME\Documents\C++\helloworld. Wenn ich die CMD als Admin starte, liegt die a.exe im selben Verzeichnis wie die helloworld.cpp. Wenn man in G++ den Befehl "g++ helloworld.cpp -o helloworld.exe" ausführt, kommt der selbe Fehler.

0