做上位机开发免不了要调.dll库,最近有个要实现的库给过来,但是没有任何说明文档,只要下来一份C++的调用示例。按部就班,用到哪里写哪里,按照类型字长等,转成C#的类型。
碰到SYSTEMTIME,C#没有对应类型,这种情况下需要去到C++类型的定义里面。
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME;
参考格式,在C#中封装好对应的结构体,C++中WORD对应C#中UInt16。
[StructLayout(LayoutKind.Sequential)]
public struct SYSTEMTIME
{
public UInt16 wYear;
public UInt16 wMonth;
public UInt16 wDayOfWeek;
public UInt16 wDay;
public UInt16 wHour;
public UInt16 wMinute;
public UInt16 wSecond;
public UInt16 wMilliseconds;
}
使用的时候再赋值就好了。
SYSTEMTIME sYSTEMTIME = new SYSTEMTIME();
DateTime dateTime = DateTime.Now;
sYSTEMTIME.wYear = (ushort)dateTime.Year;
sYSTEMTIME.wMonth = (ushort)dateTime.Month;
sYSTEMTIME.wDayOfWeek = (ushort)dateTime.DayOfWeek;
sYSTEMTIME.wDay = (ushort)dateTime.Day;
sYSTEMTIME.wHour = (ushort)dateTime.Hour;
sYSTEMTIME.wMinute = (ushort)dateTime.Minute;
sYSTEMTIME.wSecond = (ushort)dateTime.Second;
sYSTEMTIME.wMilliseconds = (ushort)dateTime.Millisecond;