Maison  >  Article  >  développement back-end  >  Comment personnaliser le chemin de recherche des DLL pour les DLL liées statiquement ?

Comment personnaliser le chemin de recherche des DLL pour les DLL liées statiquement ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-27 16:47:01229parcourir

How to Customize the DLL Search Path for Statically Linked DLLs?

Personnalisation du chemin de recherche des DLL pour les DLL liées statiquement

Bien que la liaison statique d'une DLL garantisse qu'elle est incorporée dans l'exécutable, le chemin de recherche par défaut pour la DLL peut ne pas s'aligner sur son emplacement réel. Pour résoudre ce problème, il existe différentes approches pour modifier le chemin de recherche, notamment :

  • Chargement dynamique : Utiliser LoadLibrary("plugins/Plugin.dll") et GetProcAddress pour accéder au plugin fonctionnalité, éliminant le besoin de liaison statique.
  • Modification de l'environnement : Ajoutez le chemin d'accès au dossier des plugins à la variable d'environnement PATH du système, permettant à l'application de localiser la DLL dans ce dossier.
  • Chargement différé : Utilisez le mécanisme de chargement différé pour différer l'accès au plugin jusqu'à ce que cela soit nécessaire, permettant ainsi la création d'une fonction d'assistance personnalisée pour charger la DLL avec un chemin spécifié.
  • Transformation de l'assembly : Convertissez le dossier plugins en un assembly en créant un fichier .manifest répertoriant le plugins.dll. Marquez les « plugins » comme un assembly dépendant de votre application, en lui demandant de rechercher la DLL dans l'assembly.
  • Exécution du stub avec manipulation du chemin de la DLL : Divisez votre application en un exécutable stub et un composant chargé dynamiquement. Dans l'exécutable stub, appelez SetDllDirectory pour spécifier le chemin d'accès au dossier du plugin et LoadLibrary pour charger la DLL du plugin réelle en utilisant son chemin complet.

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!

Déclaration:
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