我需要从 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 上述调用?