Heim >Backend-Entwicklung >C++ >Können dynamische DLL-Pfade mit C#s DllImport verwendet werden?
Unterstützt DllImport in C# dynamische Laufzeitpfade?
Bei Verwendung des DllImport
-Attributs in C# müssen Sie normalerweise den Pfad zur DLL statisch angeben. Wenn der Installationspfad der Anwendung jedoch vom Benutzer abhängt (z. B. C:BenutzerBenutzername...), ist es nicht praktikabel, den absoluten Pfad fest zu codieren.
Traditionelle Methode
Trotz dieses Problems wird empfohlen, relative Pfade zu verwenden. Geben Sie nur den Namen der DLL an und das System sucht danach im Anwendungsverzeichnis und an anderen vordefinierten Speicherorten (gemäß den Windows-DLL-Laderichtlinien).
SetDllDirectory und P/Invoke
Wenn relative Pfade nicht Ihren Anforderungen entsprechen, sollten Sie die Verwendung der Funktion SetDllDirectory
in Betracht ziehen. Mit dieser Funktion können Sie den Standard-DLL-Suchpfad zur Laufzeit ändern und so einen dynamischen Pfad angeben, der zu diesem Zeitpunkt berechnet wird.
Um SetDllDirectory
zu verwenden, müssen Sie P/Invoke verwenden, da es sich um eine Windows-API-Funktion handelt. Hier ist die Aussage:
<code class="language-csharp">[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern bool SetDllDirectory(string lpPathName);</code>
Leistung
Ihr Code sollte etwa wie folgt aussehen:
<code class="language-csharp">SetDllDirectory(Path.GetTempPath() + "..\myLibFolder"); [DllImport("MyAppDll.dll")] static extern bool MyGreatFunction(int myFirstParam, int mySecondParam);</code>
Dadurch wird der DLL-Suchpfad vor der Standardsuchreihenfolge des Systems an den Speicherort umgeleitet, der den Laufzeitzweig enthält.
Vorteile
Mit der Funktion SetDllDirectory
können Sie den Laufzeitspeicherort einer DLL dynamisch angeben, ohne sich auf den Computer oder den Installationspfad des Benutzers verlassen zu müssen.
Das obige ist der detaillierte Inhalt vonKönnen dynamische DLL-Pfade mit C#s DllImport verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!