Maison > développement back-end > C++ > Les chemins DLL dynamiques peuvent-ils être utilisés avec DllImport de C# ?

Les chemins DLL dynamiques peuvent-ils être utilisés avec DllImport de C# ?

Barbara Streisand
Libérer: 2025-01-15 20:15:43
original
773 Les gens l'ont consulté

Can Dynamic DLL Paths Be Used with C#'s DllImport?

DllImport en C# prend-il en charge les chemins dynamiques d'exécution ?

Lorsque vous utilisez l'attribut DllImport en C#, vous devez généralement spécifier statiquement le chemin d'accès à la DLL. Cependant, lorsque le chemin d'installation de l'application dépend de l'utilisateur (par exemple : C:UsersuserName...), coder en dur le chemin absolu n'est pas pratique.

Méthode traditionnelle

Malgré ce problème, il est recommandé d'utiliser des chemins relatifs. Spécifiez uniquement le nom de la DLL et le système la recherchera dans le répertoire de l'application et dans d'autres emplacements prédéfinis (conformément aux directives de chargement des DLL Windows).

SetDllDirectory et P/Invoke

Si les chemins relatifs ne répondent pas à vos besoins, pensez à utiliser la fonction SetDllDirectory. Cette fonction vous permet de modifier le chemin de recherche de DLL par défaut au moment de l'exécution, vous permettant ainsi de spécifier un chemin dynamique calculé à ce moment-là.

Pour utiliser SetDllDirectory, vous devez utiliser P/Invoke car il s'agit d'une fonction API Windows. Voici son communiqué :

<code class="language-csharp">[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool SetDllDirectory(string lpPathName);</code>
Copier après la connexion

Réussite

Votre code devrait ressembler à ce qui suit :

<code class="language-csharp">SetDllDirectory(Path.GetTempPath() + "..\myLibFolder");

[DllImport("MyAppDll.dll")]
static extern bool MyGreatFunction(int myFirstParam, int mySecondParam);</code>
Copier après la connexion

Cela redirige le chemin de recherche de la DLL vers l'emplacement contenant le fork d'exécution, avant l'ordre de recherche standard du système.

Avantages

À l'aide de la fonction SetDllDirectory, vous pouvez spécifier dynamiquement l'emplacement d'exécution d'une DLL sans vous fier à la machine ou au chemin d'installation de l'utilisateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal