mikrocontroller.net

Forum: PC-Programmierung Qt QProcess setWorkingDirectory


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Thorben (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thorben (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Sven B. (scummos)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Thorben (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sven B. (scummos)
Datum:

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

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

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>2. Ok, aber was willst du jetzt da prüfen?

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

Autor: Sven B. (scummos)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: guest (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/

Autor: Jim M. (turboj)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.