2010-12-10 11 views
0

In unserer Anwendung laden wir dynamisch eine DLL-Datei, die wiederum statische Bindungen zu anderen DLLs hat.Erzwingen des statischen Ladens von DLL aus gegebenem Verzeichnis

Bis jetzt waren alle diese DLLs in unserem Anwendungsordner. Von nun an möchten wir diese DLLs in eine Verzeichnisstruktur verschieben. Aus welchem ​​Ordner die DLL geladen werden soll, muss zur Laufzeit entschieden werden. (Versionierung/dynamische Updates ...)

Frage 1: Was ist der beste Weg, um die dynamisch geladene Bibliothek zu zwingen, nach statisch geladenen Bibliotheken in einem bestimmten Ordner zu suchen?

Frage 2: Wie können wir verhindern, dass es die statischen Bibliotheken aus dem Anwendungsordner lädt, wenn eine ältere Version der Bibliotheken dort zurückgelassen wird?

(btw, es ist eine Win32-Anwendung ...)

Antwort

3

Für Q1 Sie in SetDllDirectory suchen sollte. Es wirkt sich auf alle folgenden DLL-Suchen mit der Maßgabe aus, dass DLLs in dem Anwendungsordner (wie Ihren alten DLLs) weiterhin Vorrang haben.

Frage 2 wird dann sofort beantwortet: Wenn Sie das nicht wollen, verwenden Sie nicht implizite DLL-Laden. Verwenden Sie LoadLibraryEx, und verwenden Sie einen vollständigen Pfad. Nur so kann Windows die Suche verhindern.

+0

LoadLibraryEx sieht promesing. Vielen Dank. – Vegar

Verwandte Themen