DLL-Suche in Windows

8

Unter Linux haben wir die Umgebungsvariablen LIBRARY_PATH und LD_LIBRARY_PATH , damit Programme nach Bibliotheken suchen können. Haben wir ähnliche Dinge auf Windows? Vor allem Windows 7?

Außerdem würde ich gerne die Best Practices für die Verwendung von DLL kennen (wo man sie hinstellt, envs oder nicht, etc.), da ich wie jeder bei Windows arbeiten will und mich nicht auf Workarounds trotze :)

    
Luís Guilherme 17.03.2010, 14:55
quelle

3 Antworten

8

In diesem MSDN-Artikel wird die Standardsuchreihenfolge erläutert. Ich zitiere:

  1. Das durch lpFileName angegebene Verzeichnis.
  2. Das Systemverzeichnis. Verwenden Sie die GetSystemDirectory-Funktion, um den Pfad dieses Verzeichnisses abzurufen.
  3. Das 16-Bit-Systemverzeichnis. Es gibt keine Funktion, die den Pfad dieses Verzeichnisses erhält, aber es wird gesucht.
  4. Das Windows-Verzeichnis. Verwenden Sie die Funktion GetWindowsDirectory, um den Pfad dieses Verzeichnisses abzurufen.
  5. Das aktuelle Verzeichnis.
  6. Die Verzeichnisse, die in der PATH-Umgebungsvariablen aufgeführt sind. Beachten Sie, dass dies nicht den pro-Anwendungspfad enthält, der von dem App Paths Registrierungsschlüssel angegeben wird. Der App Paths-Schlüssel wird nicht verwendet, wenn der DLL-Suchpfad berechnet wird.

In (1), wenn Sie statisch mit der Stub-Bibliothek der DLL verbunden sind, denke ich, dass "das durch lpFileName angegebene Verzeichnis der Pfad der Prozess-Exe ist."

    
Andrew Bainbridge 01.07.2011, 09:57
quelle
1

Sehen Sie sich die Hilfe für die LoadLibrary und CreateProcess Funktionen. Diese beschreiben die Pfade, die zum Lokalisieren von DLLs verwendet werden, und wie Sie sie modifizieren können.

    
anon 17.03.2010 15:00
quelle
0

Es sieht auf currentDir zuerst dann WinDir und SystemDir auch in Ihrem Pfad

    
Luca Rocchi 17.03.2010 15:02
quelle