Passage Callback C++ / CLR

Passage Callback C++ / CLR - C#/.NET managed - Programmation

Marsh Posté le 07-10-2010 à 17:55:43    

J'ai sur les bras un problème que j'arrive pas à résoudre.
 
J'ai une callback déclarée comme:  
    typedef bool            (*pfn_ZeCallback)(...[args]...);
 
Une classe 'Maitre', contient une fonction 'SetCB(pfn_ZeCallback _toto)' qui permet de définir la callback, utilisée par une autre méthode 'Process' de 'Maitre'.
 
Cette méthode 'Process' peut être appelée par du code managé, ou du C++, suivant l'appli dans laquelle il est compilé.
En C++ tout fonctionne forcément. Je peux filer une fonction à 'SetCB' sans problème, et elle est appelée comme il faut.
 
Les choses se corsent que je suis en managé.
J'ai essayé naïvement de passer la fonction managée à SetCB, mais j'ai eu un message du compilo m'indiquant que pour avoir un pointeur de fonction, il faut que je rajoute '&'. Chouette me dis-je, suffit de le rajouter.
 
Si je fais ça j'ai un message m'expliquant que non, faut utiliser une delegate.
 
J'ai créé une delegate à partir de ma fonction, puis passé la delegate à SetCB, mais je me prends une erreur de cast: impossible de convertir IntPtr to pfn_ZeCallback.
J'ai ensuite essayé de récupérer un pointeur de fonction à partir de la delegate via la fonction 'GetFunctionPointerForDelegate', mais je me prends aussi une erreur de cast.
 
J'ai même essayé de passer ma fonction en void * et ça change rien...
 
 
Des idées ?
 
 
 

Reply

Marsh Posté le 07-10-2010 à 17:55:43   

Reply

Marsh Posté le 01-02-2011 à 17:16:30    

Bonjour,
 
Je tente moi aussi d'utiliser 1 callback en reprenant 1 programme en C++ MFC, et j'y arrive pas, il me met une erreur de syntaxe sur l'identification de la callback !? Est-ce que tu as réussi ?
J'ai le même programme en C#, mais j'arrive pas à l'adapter non plus ... :(.
 
Merci de ton retour.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed