Bonjour,
si je place ma DLL dans le répertoire de l'application elle est chargée, mais pas si elle se trouve dans un répertoire de l'application.
comment demander à Windows de charger la DLL dans un répertoire de l'application ?
merci
Bonjour,
si je place ma DLL dans le répertoire de l'application elle est chargée, mais pas si elle se trouve dans un répertoire de l'application.
comment demander à Windows de charger la DLL dans un répertoire de l'application ?
merci
Soit il faut la charger manuellement depuis ton code, soit la dll doit être présente dans les chemins recherchés par Windows :
https://docs.microsoft.com/fr-fr/win...p-applications
Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
Mon article sur le P2V, mon article sur le cloud
Consultez nos FAQ : Windows, Linux, Virtualisation
En utilisant LoadLibraryA() j'arrive à charger ma DLL, mais faut-il la décharger quand je n'en ai plus besoin, sachant que la DLL principale est elle-même déchargée ?
Je pense que c'est plus propre (à moins que ton appli est potentiellement ouverte/fermée à fréquence conséquente), sinon elle va rester en mémoire à dispo. Si Windows manque de mémoire, je pense qu'il décharge automatiquement les DLL plus utilisées
Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
Mon article sur le P2V, mon article sur le cloud
Consultez nos FAQ : Windows, Linux, Virtualisation
Si une DLL a été chargée avec LoadLibrary(), Windows ne peut pas savoir qu'elle n'est plus utilisée juste parce que la DLL qui l'a chargée n'est plus là (parce que Windows ne sait pas quelle DLL l'a chargée).
Si tu veux charger ta DLL "déclarativement" alors qu'elle est dans un sous-répertoire, tu peux la mettre en delay-load (chargement retardé) et utiliser AddDllDirectory() avec ton sous-répertoire avant le premier appel à la DLL...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
ce code fonctionne égelement
N. B. : LoadLibrary() nécessite également un delay-load (chargement retardé) pour fonctionner
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_DEFAULT_DIRS); AddDllDirectory(bstrDir);
Pourquoi les solutions à base de manifeste d'application + COM ne permettraient pas de faire cela de manière plus "intégrée" ?
Une DLL COM peut être chargée via COM depuis n'importe où tant qu'elle est enregistrée, mais il faut également que ses dépendances soient accessibles.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Les les composants COM dépendent d'autres composant COM, c'est le travail de l'installeur de faire le nécessaire.
Si c'est des dépendances à des Dll "classiques", le manifeste devrait permettre le déploiement "side by side" des Dll depuis des sous-répertoires de l'installation, non ?
Pour le déchargement "automatique" de ces Dll "classique", un carrossage COM devrait être facile, non ?
.NET intègre COM, mais je ne sais pas s'il y a plus "moderne" que COM pour le chargement/déchargement dynamique.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager