Passage Callback C++ / CLR - C#/.NET managed - Programmation
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.
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 ?