【发布时间】:2008-09-29 14:18:17
【问题描述】:
我需要从 c# 调用一个外部 dll。这是标题定义:
enum WatchMode {
WATCH_MODE_SYSTEM = 0,
WATCH_MODE_APPLICATION = 1 };
LONG ADS_API WDT_GetMode ( LONG i_hHandle, WatchMode * o_pWatchMode );
我已经在 C# 中添加了枚举和调用:
public enum WatchMode
{
WATCH_MODE_SYSTEM = 0,
WATCH_MODE_APPLICATION = 1
}
[DllImport("AdsWatchdog.dll")]
internal static extern long WDT_GetMode(long hHandle, ref WatchMode watchmode);
这会生成 AccessViolationException。我知道 dll 正在“工作”,因为我还添加了对GetHandle 的调用,它返回上面提到的hHandle。我试图将参数更改为 int (ref int watchmode) 但得到相同的错误。有谁知道我如何 PInvoke 上述调用?
【问题讨论】:
标签: c# windows interop pinvoke