gpt4 book ai didi

c# - 在 C# 中编码(marshal)带有指针参数的方法指针

转载 作者:行者123 更新时间:2023-11-30 15:44:44 25 4
gpt4 key购买 nike

我需要用指针参数编码一个方法指针,就像在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com