Forum: PC-Programmierung Qt QProcess setWorkingDirectory


von Thorben (Gast)


Lesenswert?

Hallo, ich hätte eine Frage zu QProcess und setWorkingDirectory um meine 
Interpretation der Dokumentation zu bestätigen.

Die Qt Beschreibung sagt

"Sets the working directory to dir. QProcess will start the process in 
this directory. The default behavior is to start the process in the 
working directory of the calling process."

1. Wenn ich in meinem Hauptprogramm einige Prozesse mit QProcess starte, 
dann nehmen die Kinderprogramme die DLL's vom Hauptprogramm, weil die im 
Verzeichnis des Hauptprograms liegen und ich kein Arbeitsverzeichnis 
gesetzt hab, richtig?

von Sven P. (Gast)


Lesenswert?

Thorben schrieb:
> 1. Wenn ich in meinem Hauptprogramm einige Prozesse mit QProcess starte,
> dann nehmen die Kinderprogramme die DLL's vom Hauptprogramm, weil die im
> Verzeichnis des Hauptprograms liegen und ich kein Arbeitsverzeichnis
> gesetzt hab, richtig?
Hängt vom Suchpfad des Loaders ab.

Unter Linux wird normalerweise überhaupt nicht im Arbeitsverzeichnis 
gesucht.
Unter Windows gibts stattdessen eine DLL-Hölle, da könnte das durchaus 
so sein.

von Thorben (Gast)


Lesenswert?

Ps.: Hab nicht daran gedacht mitzuteilen das es um Windows 10 geht.

2. Kann ich von laufenden Programmen die Abhängigkeiten prüfen mit Pfad?

von Sven B. (scummos)


Lesenswert?

Das Working Directory ist nicht das Verzeichnis, in dem das Executable 
liegt. Auch nicht beim Parent-Prozess. Üblicherweise findet man 
DLLs/Plugins eher, indem man den Pfad des Executables nimmt und dessen 
Verzeichnis durchsucht, anstatt auf das Working Directory zu schauen.

2. verstehe ich nicht. Was für Abhängigkeiten?

: Bearbeitet durch User
von Thorben (Gast)


Lesenswert?

Hallo, danke für eine Information, dann hab die Erklärung von 
WorkingDirectory missverstanden.

1. Die Executable sucht immer im gleichen Verzeichnis nach Ihren 
Abhängigkeiten (*.DLL's) zuerst und danach im System32 (Windows 10 64Bit 
Ordner)?

>2. verstehe ich nicht. Was für Abhängigkeiten?

Die Abhängigkeiten sind DLL's z.B. QtCore oder 3rd Party DLL's

von Sven B. (scummos)


Lesenswert?

1. Bin nicht gerade ein Windows-Experte aber meines Wissens ja.

2. Ok, aber was willst du jetzt da prüfen?

von Dirk (Gast)


Lesenswert?

>2. Ok, aber was willst du jetzt da prüfen?

Meine Vermutung aus Punkt 1., weil ich auch kein Windows Experte bin.

von Sven B. (scummos)


Lesenswert?

Ich versteh's immer noch nicht. Deine Formulierung ist

> 2. Kann ich von laufenden Programmen die Abhängigkeiten prüfen mit Pfad?

Das ist überhaupt kein deutscher Satz. Willst du von dem Programm aus 
herausfinden welche DLLs es geladen hat, oder was?

von guest (Gast)


Lesenswert?

Thorben schrieb:
> 2. Kann ich von laufenden Programmen die Abhängigkeiten prüfen mit Pfad?

Von laufenden Programmen nicht, aber vom Executeable schon (außer die 
DLLs werden erst während der Laufzeit via LoadLibrary geladen, z.B. bei 
Plugins):
http://www.dependencywalker.com/

von Jim M. (turboj)


Lesenswert?

Thorben schrieb:
> 2. Kann ich von laufenden Programmen die Abhängigkeiten prüfen mit Pfad?

QT hat für seine metrische Tonne DLL Abhängigkeiten ein eigenes 
Deployment Tool: https://doc.qt.io/qt-5/windows-deployment.html


Ansonsten: Sysinternals Process Explorer, View->Lower Plane View->DLLs

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.