Soyez le premier à donner votre avis sur cette source.
Snippet vu 4 552 fois - Téléchargée 17 fois
//En C# : [DllImport("MA_DLL.dll", CallingConvention = CallingConvention.Winapi)] private static extern void GiveCallbackToC(MulticastDelegate Callback_P); private delegate void T_Callback(bool ParamExemple_P); private T_Callback CallbackDelegate; private void MaCallback (bool ParamExemple_P) { } public void UneFonctionCSharp() { CallbackDelegate = new T_Callback(MaCallback); GiveCallbackToC(CallbackDelegate); } //En C : typedef void (__stdcall *T_CALLBACK) (bool ParamExemple_P); static T_CALLBACK MaCallback; void GiveCallbackToC(T_CALLBACK Callback_P) { MaCallback = Callback_P; } void UneFonctionC() { MaCallback (true); //Appel de la callback C# depuis le C }
6 mai 2013 à 04:01
s'il vous plait envoyer moi un pdf. merci
23 avril 2013 à 15:17
Il faut aussi faire attention à conserver une référence de la CallbackDelegate (en tant que membre de la classe),
Pas de « GiveCallbackToC(new T_Callback(MaCallback)) », sinon la callback est nettoyée lorsque le garbage collector se réveille.
Dans le cas contraire, l’appel de la callback en C génére aléatoirement des « illegal instruction ».
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.