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ņ?