编程语言
首页 > 编程语言> > 在C#中使用指针参数封送方法指针

在C#中使用指针参数封送方法指针

作者:互联网

我需要将带有指针参数的方法指针编组,就像在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);

标签:interop,cil,c
来源: https://codeday.me/bug/20191102/1993193.html