我需要用指针参数编码一个方法指针,就像在 C 中一样:
void (*callback)(int *x);
我如何在 C# 中将其写为结构字段?
注意:我不介意让 CLR 为我取消引用指针。
最佳答案
如果您的方法需要一个接受指向任何结构的指针的回调,您可以在指定 P/Invoke DllImports 时传递一个托管回调,如下所示:
private delegate void MyCallback(IntPtr par);
[DllImport("MyLibrary.dll")]
public static extern void SomeFunction(MyCallback callback);
然后您可以将 IntPtr
编码到实际回调方法中的适当结构。
[编辑]
要通过引用传递 int
参数,以下委托(delegate)签名应该最有效:
private delegate void MyCallback(ref int par);
关于c# - 在 C# 中编码(marshal)带有指针参数的方法指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5861461/