View Single Post
Old 09-12-2008, 13:12   #1
DuHarTapt
Junior Member
 
Iscritto dal: Sep 2008
Messaggi: 28
[C#] P/invoke di callback methods

C
Codice:
typedef void (*mia_uno)(int a);

extern "C" __declspec(dllexport) void create(classe1 a1, mia_uno b2)
{
   // fa quel che deve fare	
}

C#
Codice:
delegate void mia_uno(int a);
[DllImport("test.dll")]
internal static extern void create(IntPtr a1, mia_uno b2 );

IntPtr ptr; // viene inizializzato altrove

private void testing()
{
      mia_uno delMia = new miaDel(funccall);
       create(ptr, delMia);
}

private void funcall(int i)
{
    Console.WriteLine("ciao" + i.toString());
}

Ho sbagliato qualcosa?

Tutto questo genera "Eccezione win32 non gestita".
In msdn ho trovato che l'istanza del delegate deve coprire il tempo di vita del codice unmanaged. Potrebbe essere questo il problema?
Come si fa a fare ciņ?

Ultima modifica di DuHarTapt : 09-12-2008 alle 15:39.
DuHarTapt č offline   Rispondi citando il messaggio o parte di esso