Programm kompilliert, lässt sich aber nicht ausführen
-
@Annika Der Compiler (bzw. der Linker) teilt schon mit, wo das Programm erstellt wurde.
-
@Annika sagte in Programm kompilliert, lässt sich aber nicht ausführen:
lassen sich mit "./main" (main ist der Name der Funktion) aber leider nicht ausführen. (...) Meine Fehlermeldung gibt nur aus, dass der Befehl" ." unbekannt ist. Nutze cpp zur Zeit auf Windows
Der Forwärts-Slash
/ist der Pfadtrenner unter Linux, unter Windows wird dagegen der Backslash\verwendet und der Forwärtsslash wird für Parameter benutzt. Beim Compilieren kannst du einen Ausgabenamen angeben, bei gcc/clang geht das mit dem Parameter-o. Wenn du den nicht angibst, heißt dein Programma.outunter Linux unda.exeunter Windows. Unter MSVC kannst du die /Fe-Option benutzen.
-
Windows unterstützt beides, sowohl Forwärts- als auch Backwärtsslash.
-
-
@DocShoe sagte in Programm kompilliert, lässt sich aber nicht ausführen:
Windows unterstützt beides, sowohl Forwärts- als auch Backwärtsslash.
Nein.
Der Forwärsslash kann nicht verwendet werden. Du kannst sogar auf Kommandozeile
a.exe/b.exeschreiben und Windows führt danna.exemit dem Parameter/b.exeaus, nicht aber die Dateib.exeim Verzeichnisa.exe.Mag jetzt an dem
cmdliegen - und ich weiß nicht, ob das in Windows 11 immer noch so ist, aber so war das jedenfalls früher immer. Etwas anderes ist das, wenn man direkt Funktionen der WinAPI benutzt. Dann mag das gehen. Aber auf cmd-Kommandozeile nicht. (keine Ahnung, wie das in Powershell ist)
-
@wob
Es gibt leider einige compatibility-Hacks die immer noch drinnen sind, die dazu führen dass/bei manchen Sachen nicht funktioniert. Deina.exe/b.exeBeispiel geht z.B. wenn du den Pfad in"setzt.Was ich auch schon beobachtet habe ist dass manche Sachen mit "gemischten" Pfaden nicht klarkommen. Also dass sowas wie
C:\Foo/bar\baz.exenicht geht,C:/Foo/bar/baz.exeaber schon. IIRC war das Explorer. Bei API Calls oder Batch-Files ist mir sowas aber noch nicht aufgefallen.Aber auf cmd-Kommandozeile nicht.
Doch, geht. Man muss halt konsequent
""verwenden. Was man aber sowieso sollte, wenn man Pfade mit Leerzeichen unterstützen will.
-
@hustbaer sagte in Programm kompilliert, lässt sich aber nicht ausführen:
Doch, geht.
Ok, geht nicht in allen Fällen. Und offenbar hat @Annika doch hier in der Kommandozeile
./maineingegeben, was eben genau nicht funktioniert, um eine Dateimainim aktuellen Verzeichnis auszuführen. Daher meine Widerrede.Man muss halt konsequent "" verwenden. Was man aber sowieso sollte, wenn man Pfade mit Leerzeichen unterstützen will.
Ernsthaft? Wenn ich mein Porgramm im aktuellen Verzeichnis auf Kommandozeile aufrufe, von dem ich weiß, dass es kein Leerzeichen enthält, nutze ich NIE Quotes. Und ich bezweifle, dass du das tust. Von daher sehe ich hier den Zusammenhang nicht. Oder schreibst du wirklich
".\programm.exe"in der Kommandozeile stattprogramm? (ok, da man tab drückt, kommt das .exe automatisch - und die Quotes auch, wenn nötig)
-
@hustbaer sagte in Programm kompilliert, lässt sich aber nicht ausführen:
@DocShoe sagte in Programm kompilliert, lässt sich aber nicht ausführen:
Backwärtsslash

Noch schlimmer ist aber
@wob und @DocShoe sagten in Programm kompilliert, lässt sich aber nicht ausführen:
Forwärts-Slash
-
Ach komm, das ist doch lustig. Forwärtssläsh.
-
@DocShoe sagte in Programm kompilliert, lässt sich aber nicht ausführen:
Ach komm, das ist doch lustig. Forwärtssläsh.

-
@wob sagte in Programm kompilliert, lässt sich aber nicht ausführen:
Man muss halt konsequent "" verwenden. Was man aber sowieso sollte, wenn man Pfade mit Leerzeichen unterstützen will.
Ernsthaft? Wenn ich mein Porgramm im aktuellen Verzeichnis auf Kommandozeile aufrufe, von dem ich weiß, dass es kein Leerzeichen enthält, nutze ich NIE Quotes. Und ich bezweifle, dass du das tust. Von daher sehe ich hier den Zusammenhang nicht. Oder schreibst du wirklich
".\programm.exe"in der Kommandozeile stattprogramm? (ok, da man tab drückt, kommt das .exe automatisch - und die Quotes auch, wenn nötig)Ich hatte da eher an Batch-Files gedacht. Und Pfade die man über Environment-Variablen bekommt. Solche Dinge.
Von daher sehe ich hier den Zusammenhang nicht.
Zusammenhang mit der Frage der OP besteht keiner, das stimmt. Aber Zusammenhang mit deiner Aussage die ich zitiert habe schon. Weil es halt schon mit
cmd.exegeht, wenn man es denn richtig macht. Und das ist nicht unwichtig, wenn man mit Dingen interagieren muss die aus der POSIX Welt stammen.
-
@Quiche-Lorraine sagte in Programm kompilliert, lässt sich aber nicht ausführen:
@DocShoe sagte in Programm kompilliert, lässt sich aber nicht ausführen:
Ach komm, das ist doch lustig. Forwärtssläsh.

Mein Highlight des heutigen Tages ist die Diskussion was nun lustiger ist - Forwärtssläsh oder Backwärtsslash

-
-
-
@DocShoe
"Ich mag meine Familie kochen und meine Katze."
"Komm wir essen Opa."Satzzeichen können Leben retten!