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?
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.
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?
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
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
1. Bin nicht gerade ein Windows-Experte aber meines Wissens ja. 2. Ok, aber was willst du jetzt da prüfen?
>2. Ok, aber was willst du jetzt da prüfen?
Meine Vermutung aus Punkt 1., weil ich auch kein Windows Experte bin.
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?
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/
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.