Dateipfad der Anwedung zur Laufzeit herausfinden
-
Hi
Wie bekomme ich einen C-String, welcher mir sagt, wo meine Anwendung ist?
MfG, EOutOfResources
-
Plattformspezifisch. Nenne uns deine Zielplattform.
Es gibt auch einen Wrapper für gängige Plattformen mit Dateisystemen:
http://www.boost.org/doc/libs/1_36_0/libs/filesystem/doc/reference.html#initial_path
-
Das gute alte Windows...

-
öhm bei Consolenprogrammen einfach:
int main(int argc, char *argv[]) und argv[0] verwenden.
Mit Winapi:char strExePath [MAX_PATH]; GetModuleFileNameA(NULL, strExePath, MAX_PATH);
-
HighLigerBiMBam schrieb:
öhm bei Consolenprogrammen einfach:
int main(int argc, char *argv[])und argv[0] verwenden.
Na, probier mal aus und freu dich, dass du dann weißt, dass dein Programm im Verzeichnis "." ist

-
Ausprobiert, gibt bei mir das aktuelle Verzeichnis zurück in dem das Programm liegt. WTF meinst du Seppj?
-
HighLigerBiMBam schrieb:
Ausprobiert, gibt bei mir das aktuelle Verzeichnis zurück in dem das Programm liegt. WTF meinst du Seppj?
Das dort der Programmaufruf steht und nicht der Speicherort.
-
Aber das war doch die Frage des Autors wo seine Anwendung ist?! Ich verstehe echt nicht was ihr gerade von mir wollt, aber danke für den Versuch

-
HighLigerBiMBam schrieb:
Aber das war doch die Frage des Autors wo seine Anwendung ist?! Ich verstehe echt nicht was ihr gerade von mir wollt, aber danke für den Versuch

1. Mach Konsole auf, wechsele in das Verzeichnis mit dem Programm und ruf das Programm auf.
2. Erstelle einen symbolischen Link auf das Programm (bei den neuen Windows geht das doch endlich, oder?) und ruf das Programm über den Link auf.
-
viel einfacher:
c:\tmp>type execname.c #include <stdio.h> int main(int argc,char**argv){ return puts(argv[0]),0; } c:\tmp>execname execname
-
Gut ich hab meinen Post editiert. Geht aus der Console nicht...