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 :

Variable interne d�une dll


Sujet :

C++/CLI

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Par d�faut Variable interne d�une dll
    J�utilise une dll C++ non manag� avec PInvoke dans un programme C#. Je suis en mesure d�appeler les fonctions de la dll. Jusqu�ici tout va.

    Il y a une valeur d�une variable que j�aimerais conna�tre dans la dll. Cependant, je n�ai aucune fonction de la dll qui retourne la valeur cette variable.

    Est-il possible de conna�tre une valeur d�une variables utilis� dans la dll sans utilis� les fonctions offert par la dll dans un programme C#?

  2. #2
    Expert confirm�
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par d�faut
    La variable est export�e au moins ? (via un export dans la dll C++ ou autre chose semblable).
    Tu peut aussi regarder la dll avec DependencyWalker pour voir exactement ce qu'elle exporte.

  3. #3
    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
    Par d�faut
    si rien n'est expos�, ca ne sera pas accessible

  4. #4
    Membre �clair�
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    88
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 88
    Par d�faut
    Salut,

    Je suis pas sur d'avoir bien compris ton probl�me, mais par exemple si cette variable est un champ statique d'une classe (et pour peu qu'elle0 soit publique), tu peux en r�cup�rer sa valeur en faisant de la reflection sur l'assembly.

    Par contre si elle est d�finie au milieu de ton code source, je sais pas si tu peux, meme si elle est publique ...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Par d�faut
    Je suis assez nouveau avec les dll donc si je dis une b�tise corrig�e moi.
    Quand on dit exporter on parle bien des fonctions export�es de la DLL et des valeurs associ�es � la valeur de retour de ces fonctions. Donc si ma variable n�est pas retourn�e par une fonction de la dll je ne pourrai pas trouver sa valeur. La seule possibilit� serait peut-�tre utilis�e de la reflection sur l'assembly

    Est-ce bien �a?

  6. #6
    Expert confirm�
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par d�faut
    en C++ on peut aussi exporter les variables globales. Par contre, vu que ta dll est en C++ non manag�, la reflection ne marchera pas (cela ne sert que pour les dlls manag�es).

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Par d�faut
    J�ai trouv� un d�tail qui pourrait probablement r�soudre mon probl�me. La fonction passe en param�tre une r�f�rence. Je pr�sume donc qu�apr�s l�appel de ma fonction du dll je pourrai avoir la valeur de la variable que je veux. Voici-ci un bout de code :

    [DllImport("NM.dll", EntryPoint = "#8")]
    static extern bool NM_GetMessage(IntPtr hNetManager, ref int nSrcAddr, ref int nMsgType );

    public bool GetMessage(IntPtr hNetManager , ref int nSrcAddr, ref int nMsgType)
    {
    NM_GetMessage( HANDLE, ref nSrcAddr, ref nMsgType );
    int test = nMsgType;
    return true;
    }
    Bref sans entrer dans le d�tail de mon programme. nMsgType aurait d� en th�orie changer de valeur apr�s l�appel de la fonction NM_GetMessage du DLL dans mon programme. J�aurais cr� qu�une r�f�rence m�me apr�s avoir �t� appel�e � travers une DLL me donnerait la nouvelle valeur de la variable. On dirait que les r�f�rences entre la DLL C++ non manag� et mon programme C#.net ne se font pas. Est-ce possible ou un d�tail m��chappe?

    Merci

  8. #8
    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

  9. #9
    Membre �clair�
    Inscrit en
    Juillet 2007
    Messages
    357
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 357
    Par d�faut
    Salut

    -Si tu parle d une variable statique globale, il n est pas possible de les utilise directement avec pinvoke sauf si tu peux modifier le code de la dll native.

    -SI tu est obliger de voir cette variable et que tu ne possede pas le code alors il faut que tu utilise un wrapper c++.net avec la techno IJW/C++ interop

  10. #10
    Expert confirm�
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par d�faut
    Citation Envoy� par ZashOne Voir le message
    un wrapper c++.net avec la techno IJW/C++ interop
    = C++/CLI

Discussions similaires

  1. R�ponses: 5
    Dernier message: 08/09/2005, 20h33
  2. Acces aux variables d'une DLL
    Par abignon dans le forum MFC
    R�ponses: 1
    Dernier message: 08/09/2005, 14h29
  3. Proc�dures stock�es, Trigger et variables internes
    Par lio33 dans le forum InterBase
    R�ponses: 1
    Dernier message: 01/09/2005, 10h28
  4. [MFC] Variable global et DLL d'extension
    Par Capnader dans le forum MFC
    R�ponses: 2
    Dernier message: 31/03/2005, 11h33
  5. [VB.NET] Problem de r�cup�ration de variable avec une DLL
    Par ludovic85 dans le forum Windows Forms
    R�ponses: 11
    Dernier message: 19/01/2005, 11h37

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