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

VC++ .NET Discussion :

Modifier le répertoire où trouver les dlls


Sujet :

VC++ .NET

  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 Modifier le répertoire où trouver les dlls
    Bonjour,

    ma dll en visual C++ appelle une dll en C#, pour que ça fonctionne il faut que ma dll soit placé dans le même répertoire que mon exe, est-il possible d'ajouter un autre répertoire où rechercher les dlls ?
    La dll se trouve dans un sous-répertoire.

    Merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 431
    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 431

  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
    je ne vois pas en quoi c'est du bricolage, ça permet d'avoir un projet correctement structuré.
    Ce lien ne me dit pas comment modifier le manifest ?

    J'ai trouvé ce lien AddDllDirectory function mais ça ne fonctionne pas.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 431
    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 431
    Par défaut
    je ne vois pas en quoi c'est du bricolage, ça permet d'avoir un projet correctement structuré.
    Un assembly .NET (C#), comme un composant COM, n'est pas une Dll au sens système, même si les fichiers générées ont des extensions en .dll.

    pour que ça fonctionne il faut que ma dll soit placé dans le même répertoire que mon exe,
    Si ça c'est pas du bricolage, ça y ressemble furieusement. Il est très probable que le répertoire d'un EXE soit extrêmement contraint en terme de sécurité et que des Dll, type plug-ins par exemple, doivent être stockées ailleurs pour éviter ces problèmes de sécurité.
    Et rien ne garantit que les réglages système qui permettent à ce bricolage de fonctionner sur votre machine de développement soient les mêmes sur toutes les machines de vos clients potentiels.

    est-il possible d'ajouter un autre répertoire où rechercher les dlls ?
    C'est pas une Dll, vous ne connaissez pas les réglages qui défonceront vos assertions, etc...

    En utilisant un manifeste vous pouvez rendre votre structure de fichiers opérationnelle sur l'ensemble des plateformes clientes potentielles.

    Ce lien ne me dit pas comment modifier le manifest ?
    Un manifest, c'est juste un fichier XML dont éditable avec n'importe quel éditeur de texte.

    J'ai trouvé ce lien AddDllDirectory function mais ça ne fonctionne pas.
    Avez-vous au moins lu la documentation, et en particulier les "Remarks", mais bon, c'est pour des Dll "système", pas pour des assemblies.

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 391
    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 391
    Par défaut
    AddDllDirectory() peut être nécessaire quand un assembly .Net référence des DLLs non-managées (et s'il les référence directement, genre les dépendances d'un assembly en C++/CLI, plutôt que via P/Invoke, alors on ne peut pas charger l'assembly sans les DLLs).

    Mais dans le cas des assemblys .Net, ils doivent:
    • soit être tous situés dans le même répertoire,
    • soit s'ils sont ailleurs, il faut:
      • soit les charger via leur chemin (Assembly.LoadFrom()) ce qui a des conséquences pour le contexte de sécurité (c'est ce que je fait pour mes plug-ins).
      • soit faire la résolution soi-même si on veut les charger dans le même contexte de sécurité.
    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
    Merci @Médinoc "Assembly.LoadFrom()" fonctionne.

    une autre question :
    existe-il une fonction pour décharger cette dll quand on en a plus besoin ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 19
    Dernier message: 11/05/2017, 20h28
  2. Dans quel répertoire il faut placer les .dll
    Par BasicZX81 dans le forum VB.NET
    Réponses: 2
    Dernier message: 31/08/2012, 18h14
  3. Trouver dans quel répertoire se trouve la DLL
    Par colorid dans le forum Langage
    Réponses: 3
    Dernier message: 18/03/2009, 17h17
  4. Réponses: 1
    Dernier message: 12/01/2008, 09h07
  5. [Pocket PC/dll] Où se trouve les DLL ?
    Par Tueur_a_gage dans le forum Windows Mobile
    Réponses: 3
    Dernier message: 30/08/2006, 22h28

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