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.
Partager