Salut après référence à http://www.mono-project.com/Embedding_Mono Je peux appeler des méthodes à partir du code managé en utilisant mono_runtime_invoke.passage de pointeurs (fonction) entre c et mono
Maintenant, je veux appeler une méthode dans le code managé avec un pointeur de fonction (ou au moins une partie pointeur) comme argument de code natif c
code managé
public delegate void MyDelegate();
//method i want to call from native code
public static MyDelegate mono_method(MyDelegate c_ptr)
{
//...do sth
return c_ptr;
}
code natif
typedef void (*FUNC_PTR)();
FUNC_PTR my_fct_ptr = some_c_function;
//calling the managed method
MonoObject *result_of_mono_method =
mono_runtime_invoke(mono_method, NULL, my_fct_ptr, NULL);
modifier: de signaler le problème
comment puis-je appeler
public static unsafe int* mono_method(int *c_ptr)
du code c natif, sans utiliser dllImport.
Je ne comprends pas le point dans les deux options où le pointeur c va dans C#. Pouvez-vous écrire un exemple ou clarifier un peu? – Gobliins
Une autre option serait d'appeler à partir du code natif une méthode C# spécifique qui prendrait un IntPtr et l'appelait Marshal.GetDelegateForFunctionPointer. –
hmm idk si je me trompe. Mais je ne veux pas mettre une méthode mono sur un pointeur de fonction c. Je veux seulement appeler une méthode mono avec un pointeur comme argument et valeur de retour. – Gobliins