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 :

utiliser un callback C++ natif avec du code .NET (en C#)


Sujet :

C++/CLI

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1
    D�tails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (�le de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1
    Par d�faut utiliser un callback C++ natif avec du code .NET (en C#)
    Bonjour � tous, premier message et premier souci !

    Je dispose d'un p�riph�rique et d'un code sommaire pour l'utiliser. Sans entrer dans des d�tails (confidentiel), voici les fichiers dont je dispose

    pour l'exemple, ce code sera nomm� toto dans la suite de l'explication.

    J'ai trois fichiers : toto.h, toto.lib, toto.dll (dll native)

    toto.ha la t�te suivante :

    #ifdef TOTO_EXPORTS
    #define TOTO_API __declspec(dllexport)
    #else
    #define TOTO_API __declspec(dllimport)
    #endif

    typedef struct _mastruct
    {
    WORD data1, data2, data3, data4;

    } mastruct;


    typedef void (WINAPI *TotoCallback) (const mastruct *, int, int);
    TOTO_API int RegistCallback(TotoCallback);


    Cette fonction me permet d'enregistrer un callback que je code, et qui a la t�te suivante :

    void WINAPI monCallback(const mastruct *data, int i, int j)
    {
    //traitement des param�tres, fournis par le p�riph�rique
    }


    Ce callback est automatiquement appel� lorsque le p�riph�rique d�tecte une activit�.
    J'arrive � faire fonctionner le tout avec un programme C++ WIN32, mais j'aimerais exploiter tout cela avec C#/.NET.

    J'ai donc 2 questions :

    Est-il possible d'enregistrer une m�thode C# en tant que callback aupr�s de la fonction RegistCallback ? (j'en doute)

    Dans le cas probable o� ce n'est pas possible, je vais donc devoir utiliser ma fonction monCallback(). J'aimerais que cette fonction l�ve un �v�nement (grosso-modo, impl�mente un d�l�gu� pour abonner des m�thodes C#). Est-ce possible ?

    sinon, au pire, comment peut-on appeler une m�thode C# depuis du code C++ natif ???

    Merci � ceux qui auront lu jusqu'ici !

  2. #2
    Membre �clair�

    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2003
    Messages
    286
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 286
    Par d�faut
    Tu peux toujours envoyer un message � ton appli .net, en passant tes donn�es dans le message si je dis pas de conneries.

    genre :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    void WINAPI monCallback(const mastruct *data, int i, int j)
    {
     
        //traitement des paramètres, fournis par le périphérique
        EnvoyerMessage(donnees)
     
    }
    Et dans ton code C#, tu impl�mente une r�ception de message.

    Tu envoie ton message en broadcast depuis ta dll.

  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
    tu peux regarder dans ce post, c'est le meme principe : http://blog.developpez.com/nico-pyri...i_exe#more6460

    Grosso modo, le principe est d'utiliser GetFunctionPointerForDelegate et de lever un �v�nement

  4. #4
    Membre �clair�

    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2003
    Messages
    286
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 286
    Par d�faut
    Salut,

    Dans le cas d'une DLL C++ qui utilise les MFC (donc pas de C++/CLI � premi�re vue ...) et qui fait appel a des librairies externes, m'est-il possible de g�rer �galement la callback C++ depuis .net ?
    (j'utilise actuellement un wrapper sous vb.net)

    merci.

Discussions similaires

  1. [XSLT] Utilisation d'un fichier XSL avec du code Java
    Par Baboulinet_ dans le forum Format d'�change (XML, JSON...)
    R�ponses: 13
    Dernier message: 20/04/2012, 17h04
  2. R�ponses: 4
    Dernier message: 03/03/2010, 09h08
  3. Utilisation d'une lib C++ avec un code C.
    Par Letinono dans le forum D�buter
    R�ponses: 1
    Dernier message: 30/11/2009, 16h16
  4. R�ponses: 1
    Dernier message: 20/11/2008, 08h36
  5. Utilisation des ancres avec le code C#
    Par alband85 dans le forum ASP.NET
    R�ponses: 8
    Dernier message: 13/07/2007, 10h34

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