IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

Charger une DLL dans un sous-r�pertoire


Sujet :

C++/CLI

  1. #1
    Membre tr�s actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par d�faut Charger une DLL dans un sous-r�pertoire
    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

  2. #2
    Responsable Syst�mes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Ao�t 2011
    Messages
    18 267
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Gestion de parcs informatique
    Secteur : High Tech - Mat�riel informatique

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 18 267
    Par d�faut
    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

  3. #3
    Membre tr�s actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par d�faut
    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 ?

  4. #4
    Responsable Syst�mes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Ao�t 2011
    Messages
    18 267
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Gestion de parcs informatique
    Secteur : High Tech - Mat�riel informatique

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 18 267
    Par d�faut
    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

  5. #5
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    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.

  6. #6
    Membre tr�s actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par d�faut
    ce code fonctionne �gelement

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_DEFAULT_DIRS);
    AddDllDirectory(bstrDir);
    N. B. : LoadLibrary() n�cessite �galement un delay-load (chargement retard�) pour fonctionner

  7. #7
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    Pourquoi les solutions � base de manifeste d'application + COM ne permettraient pas de faire cela de mani�re plus "int�gr�e" ?

  8. #8
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    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.

  9. #9
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    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.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Copie d'une dll dans Program Files sous Windows 7
    Par Jean-Marie64 dans le forum Installation, D�ploiement et S�curit�
    R�ponses: 1
    Dernier message: 12/05/2010, 15h14
  2. charger une dll C dans un code C++
    Par Nehm� dans le forum Visual C++
    R�ponses: 6
    Dernier message: 04/09/2009, 17h28
  3. Charger une dll directement dans l'application
    Par cincap dans le forum D�buter
    R�ponses: 3
    Dernier message: 06/06/2009, 14h32
  4. R�ponses: 3
    Dernier message: 24/11/2006, 11h12
  5. Charger une DLL sous java
    Par mouzon dans le forum G�n�ral Java
    R�ponses: 1
    Dernier message: 22/03/2006, 19h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo