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 :

[C#/dll C] Comment indiquer un emplacement different de system32 ?


Sujet :

C++/CLI

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Points : 320
    Points
    320
    Par défaut [C#/dll C] Comment indiquer un emplacement different de system32 ?
    Salut !

    Je suis débutant en C# et je doit appeler une fonction contenue dans une dll écrite en C. J'ai regardé dans la FAQ C# et j'ai trouvé comment le faire mais ma dll doit être dans le dossier system32.

    Mais si la dll se trouve ailleurs, comment indiquer son emplacement ?

    Merci.

    ++
    Le problème est souvent entre la chaise et le clavier

  2. #2
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Fait une recherche google sur le P/Invoke
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 11
    Points : 13
    Points
    13
    Par défaut
    Salut

    Dans la fenetre ''Explorateur de solution'', au niveau de ton projet tu as un dossier références. Click droit sur ce dossier puis ajouter une réference. Ainsi une fenetre s'ouvre, là tu click sur parcourir et tu vas chercher ta DLL, puis tu valid ton choix.

    Dans le dossier réference tu dois avoir un nouvel item qui à le nom de ta DLL, alors ca y es tu as ajouter ta DLL dans ton projet et tu dois avoir access au objets de ta DLL



    a+ RockCoeur

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par rockcoeur
    Salut
    Dans la fenetre ''Explorateur de solution'', au niveau de ton projet tu as un dossier références. Click droit sur ce dossier puis ajouter une réference. Ainsi une fenetre s'ouvre, là tu click sur parcourir et tu vas chercher ta DLL, puis tu valid ton choix.

    Dans le dossier réference tu dois avoir un nouvel item qui à le nom de ta DLL, alors ca y es tu as ajouter ta DLL dans ton projet et tu dois avoir access au objets de ta DLL
    a+ RockCoeur
    Ceci n'est valable que pour une dll managée .Net

    C'est effectivement P/Invoke qui est la solution à exploitée
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Points : 320
    Points
    320
    Par défaut
    Re !

    Tout d'abord merci à vous pour votre aide.

    Alors voilà ce que j'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    [DllImport("interface.dll")]
            static extern void interface__open
            (
                int used_port,
                long supply_voltage
            );
    Ensuite j'appelle ma fonction mais malgré des recherches je n'ai pas trouvé comment indiquer un autre dossier que system32 pour chercher ma dll. Tous les exemples que j'ai vu utilisent des dll situées dans system32...

    Voici ce qu'ont donné mes recherches :
    http://faqcsharp.developpez.com/?pag...syst_apiinvoke
    http://morpheus.developpez.com/dlldotnet/
    http://www.microsoft.com/france/msdn...z-Pinvoke.mspx

    J'avoue que je suis un peu perdu..

    ++
    Le problème est souvent entre la chaise et le clavier

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Points : 320
    Points
    320
    Par défaut
    J'ai trouvé, c'était tout bête mais encore fallait-il le savoir... ça ne fonctionnait pas quand j'indiquais un chemin complet parce que je ne doublais pas le backslash...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    [DllImport("C:\\interface.dll")]
    static extern void interface__open
    (
         int used_port,
         long supply_voltage
    );
    ++
    Le problème est souvent entre la chaise et le clavier

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 55
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par SesechXP
    J'ai trouvé, c'était tout bête mais encore fallait-il le savoir... ça ne fonctionnait pas quand j'indiquais un chemin complet parce que je ne doublais pas le backslash...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    [DllImport("C:\\interface.dll")]
    static extern void interface__open
    (
         int used_port,
         long supply_voltage
    );
    ++


    Et tu peux aussi utiliser le '@' devant la chaîne, pour éviter de doubler les backslashes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [DllImport(@"C:\interface.dll")]

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Points : 320
    Points
    320
    Par défaut
    Merci pour l'astuce

    ++
    Le problème est souvent entre la chaise et le clavier

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

Discussions similaires

  1. Comment indiquer l'emplacement de la DLL
    Par touhami dans le forum Delphi
    Réponses: 10
    Dernier message: 13/03/2007, 17h07
  2. Réponses: 4
    Dernier message: 25/10/2005, 08h48
  3. Comment indiquer un critère chiane non vide
    Par le lynx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/08/2005, 12h38
  4. Réponses: 13
    Dernier message: 16/03/2005, 11h29
  5. automation excel : comment indiquer la feuille de travail ?
    Par mat_lefebvre dans le forum Access
    Réponses: 2
    Dernier message: 04/12/2003, 15h14

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