在 C# 中封送带有指针参数的方法指针
我需要用指针参数封送方法指针,就像在 C 中一样:
void (*callback)(int *x);
如何将其写为 C# 中的结构字段?
注意:我不介意让 CLR 为我取消引用指针。
I need to marshal a method pointer with a pointer argument, like so in C:
void (*callback)(int *x);
How would I write that as struct field in C#?
Note: I don't mind having the CLR dereference the pointer for me.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您的方法需要接受指向任何结构的指针的回调,则可以在指定 P/Invoke DllImports 时传递托管回调,如下所示:
然后您可以将
IntPtr
编组到实际回调内的适当结构方法。[编辑]
要通过引用传递
int
参数,以下委托签名效果最好:If your method expects a callback accepting a pointer to any structure, you can pass a managed callback when specifying your P/Invoke DllImports like this:
You can then Marshal the
IntPtr
to an appropriate structure inside your actual callback method.[Edit]
To pass an
int
parameter by reference, following delegate signature should work best: