3

我有一个使用 C++ 开发的 dll。现在我希望在我的 C# 应用程序中使用这些函数。我知道如何在我的应用程序中使用 dll,但我的问题是 dll 需要一个 SYSTEMTIME 类型的参数。

[DllImport("MyControl.dll")]
 public static extern Int32 MyCONTROL_NewControl(SYSTEMTIME stime);

但我无法SYSTEMTIME在我的 C# 代码中使用。请就如何使用SYSTEMTIME.

4

2 回答 2

4

那应该工作:

[StructLayout(LayoutKind.Sequential)]
private struct SYSTEMTIME {
    Int16 wYear;
    Int16 wMonth;
    Int16 wDayOfWeek;
    Int16 wDay;
    Int16 wHour;
    Int16 wMinute;
    Int16 wSecond;
    Int16 wMilliseconds;
}

另请参阅Christian.K指出的pinvoke的即用型解决方案。

于 2012-05-16T06:43:38.853 回答
3

这就是你在 c# 中使用它的方式:

    [StructLayout(LayoutKind.Sequential)]
    public struct SYSTEMTIME
    {
        ushort wYear;//ushort = WORD
        ushort wMonth;
        ushort wDayOfWeek;
        ushort wDay;
        ushort wHour;
        ushort wMinute;
        ushort wSecond;
        ushort wMilliseconds;
    }
于 2012-05-16T06:44:25.113 回答