我需要将带有指针参数的方法指针编组,就像在C中一样:
void (*callback)(int *x);
如何在C#中将其写为struct字段?
注意:我不介意CLR为我取消引用指针.
解决方法:
如果您的方法期望回调函数接受指向任何结构的指针,则可以在指定P / Invoke DllImports时传递托管回调,如下所示:
private delegate void MyCallback(IntPtr par);
[DllImport("MyLibrary.dll")]
public static extern void SomeFunction(MyCallback callback);
然后,您可以将IntPtr编组为实际回调方法中的适当结构.
[编辑]
要通过引用传递int参数,最好使用以下委托签名:
private delegate void MyCallback(ref int par);