【发布时间】:2012-04-08 21:11:37
【问题描述】:
我正在为非托管 C dll 编写 C# 绑定。
dll 提供了 5 个钩子来返回多个数据:
typedef void (*t_libpd_printhook)(const char *recv);
并导出如下字段:
EXTERN t_libpd_printhook libpd_printhook;
现在我使用Interop Assistant 生成绑定代码,这给了我一个委托定义:
public delegate void t_libpd_printhook([In] [MarshalAs(UnmanagedType.LPStr)] string recv);
那么我可以使用一些神奇的互操作函数调用来设置 DLL 中的 t_libpd_printhook 字段吗?
【问题讨论】:
-
啊,不知道那个,但是我怎么给它分配一个代表呢?
-
是的,我现在接受了你的回答,因为它是我问题的正确答案。但由于我使用的 dll 是开源的,我可能会按照 usr 的建议添加 setter 方法。我发现这很有帮助:stackoverflow.com/questions/2167895/…
-
有趣的问题,我同意如果您正在编译本机代码,setter 是正确的解决方案。
标签: c# dll delegates interop dllimport