对于采用 var args 的函数,正确的 PInvoke 签名是什么?
有一个本机函数:
int sqlite3_config(int, ...);
我想 PInvoke 到此函数。目前,我有这样的声明:
[DllImport("sqlite3", EntryPoint = "sqlite3_config")]
public static extern Result Config (ConfigOption option);
(Result 和 ConfigOption 是 enum Result : int { ... } 形式的枚举。)
我实际上只对此函数的单参数版本感兴趣,并且不'不需要其他参数。这是正确的吗?
我也很好奇你将如何声明两个参数形式(也许需要 2 个 IntPtr?)。
There is a native function:
int sqlite3_config(int, ...);
I would like to PInvoke to this function. Currently, I have this declaration:
[DllImport("sqlite3", EntryPoint = "sqlite3_config")]
public static extern Result Config (ConfigOption option);
(Result and ConfigOption are enums of the form enum Result : int { ... }
.)
I am actually only interested in the single parameter version of this function and don't need the other args. Is this correct?
I am also curious as to how you would declare the two argument form (perhaps it would take 2 IntPtrs?).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要使用 __arglist 关键字(未记录),Bart# 有一个 关于它的好博客。
示例
这不是 pinvoking vararg 方法的标准方法,大多数解决方案会将其包装在多种方法中,例如
You need to use the __arglist keyword (which is undocumented), Bart# had a nice blog about it.
Example
The is no standard way of pinvoking vararg methods, most solutions will wrap it in several methods e.g.