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 :

Comment spécifier le chemin vers des dll ?


Sujet :

C++/CLI

  1. #1
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut Comment spécifier le chemin vers des dll ?
    Bonjour,

    J'ai un projet C# qui utilise un wrapper C++/CLI. J'ai pas mal de DLL en C appelée depuis le wrapper et par défaut ces DLL je dois les mettre dans le répertoire de sortie de l'appli C# (avec la DLL du wrapper donc).

    Peut-on spécifier un autre emplacement pour les DLL en C ? Par exemple, je voudrais que ces DLL soient dans un répertoire dll qui se trouverait dans le répertoire de l'application.

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Dans l'app.config, je recherche quelle section exactement. J'éditerai mon message quand j'aurais trouvé.

    EDIT : Tu peux le définir en ajout cette balise <probing privatePath = "Bin;Dll"/>
    Elle permet de spécifier les endroits où l'executable va chercher les assemblies dépendantes.

  3. #3
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Je teste la semaine prochaine et je vous tiens au courant. Merci beaucoup en tout cas ^^

  4. #4
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Bon, soit ca ne fonctionne pas soit je m'y prend mal.

    J'ai suivi ceci pour ajouter un fichier de configuration à mon projet C++/CLI.

    Le contenu du fichier de configuration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <configuration>
    	<probing privatePath="Bin"/>
    </configuration>
    Dans mon répertoire de sortie j'ai donc ma dll C++/CLI, que l'on appellera MaSuperDll.dll, le fichier de configuration MaSuperDll.dll.config et mon exe en C#, MonSuperExe.exe qui appelle le wrapper C++/CLI.

    Dans le répertoire de sortie, j'ai un sous-répertoire Bin qui contient les dll nécessaire au wrapper C++/CLI.

    Au lancement j'ai une exception car il ne trouve pas les DLL.

    Je me suis planté où ? ^^

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    tiens au fait mon ptit StormimOn, t'as le meme tuto en fr ici http://nico-pyright.developpez.com/t...rationsection/

    ces dll que tu veux avoir, ce sont des dll win32 ou des assemblys ?

  6. #6
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Ce sont des DLL en C fournies par un tiers.

    J'ai les .h et les .lib pour compiler le wrapper C++/CLI (utilisé par un projet C# au sein de la même solution) et je veux pouvoir indiquer où seront placées les DLL C , histoire d'organiser un peu l'ensemble.

  7. #7
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    les dll doivent etre dans le meme répertoire que le wrapper, ou dans le path (ce qui est peut-etre le plus adapté).

    Sinon, il faudra faire un chargement dynamique plutot qu'une liaison statique

  8. #8
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par nico-pyright(c)
    les dll doivent etre dans le meme répertoire que le wrapper, ou dans le path (ce qui est peut-etre le plus adapté).
    Arf

    Citation Envoyé par nico-pyright(c)
    Sinon, il faudra faire un chargement dynamique plutot qu'une liaison statique
    Je vais regarder de ce côté, j'avais un exemple je crois pour ça mais en C#. C'est le même principe je suppose.

    Le seul truc c'est que les DLL sont en C, donc pas de notions de classes, et d'après mes souvenirs tu charges l'assembly, tu récupères un type pour récupérer les infos des méthodes de ce type et après avec le Activator tu crées une instance du type qui servira à appeler la méthode.

  9. #9
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    non, mais ca, c'est pour instancier un objet .net
    j'avais cru comprendre que tu parlais des dll C que tu utilisais dans ton wrapper

    le chargement dynamique aurait une tete comme ca : http://cpp.developpez.com/faq/vc/?pa...owToLoadDynLib

  10. #10
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Ok, je testerais pour voir

  11. #11
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Juste un petit message pour dire que c'est résolu. Plutôt que d'essayer de faire une liasion dynamique en C, j'ai fini par utiliser le probing.

    J'ai mon projet C++/CLI qui utilise les DLL C. La dll de ce projet et les DLL C sont dans un répertoire bin du répertoire du projet principal.

    J'ai mon projet principal qui référence le projet C++/CLI et j'ai ajouté le répertoire bin dans le probing via l'app.config et ca fonctionne nickel

    Je ne connaissais pas le probing, mais c'est super pour organiser son répertoire d'application

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 04/05/2009, 14h54
  2. Réponses: 0
    Dernier message: 23/03/2009, 12h04
  3. Comment connaître le chemin vers un répertoire donné ?
    Par Bobsinglar dans le forum Struts 2
    Réponses: 4
    Dernier message: 10/10/2008, 09h17
  4. Utilisations croisés de références vers des dll
    Par Pilloutou dans le forum Framework .NET
    Réponses: 3
    Dernier message: 05/11/2006, 21h56
  5. |VB6] Comment Lister les liens vers des fichiers d'une page web
    Par Mayti4 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 18/01/2005, 18h17

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