![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP](https://dbsqp.com/x.php?x=czhZekJxWWRmWkNLRXBKYTdwb0Y4cWpQeTd6VD1jTGI9bzBPVnFVV0Y9a2M4MVV2UHNuWllvVGl1ZEl0LXFWR1B0enlFN1FiZHM1M0RsRmFHcGoycDcweFo5azM1blZkZWcyVzVpSUdvblZhRWxRdm51VFhZc3NqeGlWbVFoRHRHPUVWazEzRHhmRTJlbUh4YmtZVkFlbldhcmp6QjR6cU9nM0g2cG91T29rQlE%3D)
=====================================
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP](https://dbsqp.com/x.php?x=WG9EaC1wQkVFWDY1dmozYnBvaHRvU2c1cFZ6US1aaWQ1b00xOXBPQkJsbWFyak5hOFdnVTdXUWdjYWl3Nm0tWkxwdU1Ba1RiSXJlMnRRdFZzWWl3b2tpeFdvTk4ybE1JR2QyWFRod0dVT09CLVJRWW1hQ1pSb0JOcmg3UjdmRnF4cUFTUkx3dHNOQXdKbXowRGd3QThaZXRabW1mc213cDNIY0Z5WVRvOHBTQUo%3D)
WORD ushort
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP](https://dbsqp.com/x.php?x=Z3pLcUgwZWxUT0xRNnZBbXd4cTRGenZ3NnMtY0hrcG1DenBXTWdmWU14dmx5c1dsWjN2TE10YnNsbHA1RHhiNmFnPWpMd2NtUDBuQkt4OE05dnQ4eHZwNmZ6cXVGY2RmUnA9aWFxNVJ4dmQ0UG9ia3ZsSmlhemV1NllNb0dyTzE0ekpkdXM9azlrTDhTeDY5TXJOaExRdkVreXZxenY1MFVvcjhEdmUwRjBaSlM%3D)
DWORD uint
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP](https://dbsqp.com/x.php?x=dHNwaFg4dGNadVBMd3FKZFE0OXdOOXo3dnJJVlJyTWRPLXZMQnZvVlg2OGNPMmdiUXc0WVc2cGxydkR1LXJteGs5TWdTOGdiYXQyNVc0SlpEPXl6bW9JeHY3NWxMOGhhSGtJWjZ4TUo1NWhERW5sZDVzc1ptLWtqdm5WbFIwYnNVOVRUbGxJeEh4WjFZN1V5SGxZWVZ0OEJyLXpmLW9Jc2d2NEpKPWpyNnQ0QWk%3D)
UCHAR int/byte 大部分情况都可以使用int代替,而如果需要严格对齐的话则应该用bytebyte
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP](https://dbsqp.com/x.php?x=bzZmc1VvVFZhak5kdWt3dEZ6M3M2ajJGODV5UjNyLW9QbmVHVDFobEFtZnNIdWpaT24yZ082UGhWcy03UWxRcWgxQnc9bE10azIwMT1oRGg9OGh4aDItOHNuZmVNeGZzRmV2cHZzR0ZtZmtOUjFQWmZzZWtublRlQnRPMTZnLThOMVdSamNHNT14PXhDNFA9WmZDUlNseFJZbmZ4SXhHb0pZeVJGOFNwMTd1TGY%3D)
UCHAR* string/IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP](https://dbsqp.com/x.php?x=eXlxM1lIeGhPeUtnSThTM0NzLTRSQTZZTHU2c0d1TXhhRm5SYTFwcllGQWhENmJ3b0NCeUl1cXR2eUtMYXVZSVpBTTBlRFloenozUFhETmU0RHRJLTZSTGh2NnRQPW8zam42d3YwTWRGQVpKZHRtejYzd2ViQ2Y0SDVlPURvYzBZQWF3Qm82STgwWkprQ000Z3JadVc0QUdnQ3UwVzZSR1NqNVJOQ3FJV3dxWFg%3D)
unsigned char* [MarshalAs(UnmanagedType.LPArray)]byte[]/?(Intptr)
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
char* string
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPCTSTR string
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPTSTR [MarshalAs(UnmanagedType.LPTStr)] string
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
long int
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
ulong uint
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
Handle IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HWND IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
void* IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
int int
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
int* ref int
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
*int IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
unsigned int uint
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
COLORREF uint
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
API与C#的数据类型对应关系表
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
API数据类型 类型描述 C#类型 API数据类型 类型描述 C#类型
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
WORD 16位无符号整数 ushort CHAR 字符 char
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LONG 32位无符号整数 int DWORDLONG 64位长整数 long
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
DWORD 32位无符号整数 uint HDC 设备描述表句柄 int
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HANDLE 句柄,32位整数 int HGDIOBJ GDI对象句柄 int
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
UINT 32位无符号整数 uint HINSTANCE 实例句柄 int
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
BOOL 32位布尔型整数 bool HWM 窗口句柄 int
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPSTR 指向字符的32位指针 string HPARAM 32位消息参数 int
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPCSTR 指向常字符的32位指针 String LPARAM 32位消息参数 int
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
BYTE 字节 byte WPARAM 32位消息参数 int
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
BOOL=System.Int32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
BOOLEAN=System.Int32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
BYTE=System.UInt16
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
CHAR=System.Int16
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
COLORREF=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
DWORD=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
DWORD32=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
DWORD64=System.UInt64
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
FLOAT=System.Float
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HACCEL=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HANDLE=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HBITMAP=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HBRUSH=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HCONV=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HCONVLIST=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HCURSOR=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HDC=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HDDEDATA=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HDESK=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HDROP=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HDWP=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HENHMETAFILE=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HFILE=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HFONT=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HGDIOBJ=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HGLOBAL=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HHOOK=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HICON=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HIMAGELIST=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HIMC=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HINSTANCE=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HKEY=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HLOCAL=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HMENU=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HMETAFILE=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HMODULE=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HMONITOR=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HPALETTE=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HPEN=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HRGN=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HRSRC=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HSZ=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HWINSTA=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HWND=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
INT=System.Int32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
INT32=System.Int32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
INT64=System.Int64
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LONG=System.Int32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LONG32=System.Int32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LONG64=System.Int64
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LONGLONG=System.Int64
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPARAM=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPBOOL=System.Int16[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPBYTE=System.UInt16[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPCOLORREF=System.UInt32[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPCSTR=System.String
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPCTSTR=System.String
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPCVOID=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPCWSTR=System.String
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPDWORD=System.UInt32[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPHANDLE=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPINT=System.Int32[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPLONG=System.Int32[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPSTR=System.String
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPTSTR=System.String
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPVOID=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPWORD=System.Int32[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPWSTR=System.String
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LRESULT=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PBOOL=System.Int16[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PBOOLEAN=System.Int16[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PBYTE=System.UInt16[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PCHAR=System.Char[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PCSTR=System.String
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PCTSTR=System.String
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PCWCH=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PCWSTR=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PDWORD=System.Int32[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PFLOAT=System.Float[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PHANDLE=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PHKEY=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PINT=System.Int32[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PLCID=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PLONG=System.Int32[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PLUID=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PSHORT=System.Int16[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PSTR=System.String
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PTBYTE=System.Char[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PTCHAR=System.Char[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PTSTR=System.String
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PUCHAR=System.Char[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PUINT=System.UInt32[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PULONG=System.UInt32[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PUSHORT=System.UInt16[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PVOID=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PWCHAR=System.Char[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PWORD=System.Int16[]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
PWSTR=System.String
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
REGSAM=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
SC_HANDLE=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
SC_LOCK=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
SHORT=System.Int16
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
SIZE_T=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
SSIZE_=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
TBYTE=System.Char
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
TCHAR=System.Char
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
UCHAR=System.Byte
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
UINT=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
UINT32=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
UINT64=System.UInt64
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
ULONG=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
ULONG32=System.UInt32
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
ULONG64=System.UInt64
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
ULONGLONG=System.UInt64
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
USHORT=System.UInt16
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
WORD=System.UInt16
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
WPARAM=System.IntPtr
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
<---------补充----------->
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
Wtypes.h 中的非托管类型 非托管C 语言类型 托管类名 说明
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
HANDLE void* System.IntPtr 32 位
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
BYTE unsigned char System.Byte 8 位
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
SHORT short System.Int16 16 位
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
WORD unsigned short System.UInt16 16 位
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
INT int System.Int32 32 位
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
UINT unsigned int System.UInt32 32 位
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LONG long System.Int32 32 位
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
BOOL long System.Int32 32 位
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
DWORD unsigned long System.UInt32 32 位
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
ULONG unsigned long System.UInt32 32 位
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
CHAR char System.Char 用 ANSI 修饰。
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPSTR char* System.String 或 System.StringBuilder 用 ANSI 修饰。
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPCSTR Const char* System.String 或 System.StringBuilder 用 ANSI 修饰。
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPWSTR wchar_t* System.String 或 System.StringBuilder 用 Unicode 修饰。
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LPCWSTR Const wchar_t* System.String 或 System.StringBuilder 用 Unicode 修饰。
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
FLOAT Float System.Single 32 位
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
DOUBLE Double System.Double 64 位
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
C/C++中的结构类型数据在C#下的转换
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
在做项目移植的时候,经常会碰到数据类型的转换,而我这一次碰到的是C/C++中的结构怎样转换到C#。折腾了一个晚上终于有一个完美的方案。
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
例如我们在C/C++下的结构数据如下:
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
typedef struct
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
{
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
char sLibName[ 256 ];
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
char sPathToLibrary[ 256 ];
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
INT32 iEntries;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
INT32 iUsed;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
UINT16 iSort;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
UINT16 iVersion;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
BOOLEAN fContainsSubDirectories;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
INT32 iReserved;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
} LIBHEADER;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
我们想把它转成C#下的结构类型如下:
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public struct LIBHEADER
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
{
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public char[] sLibName;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public char[] sPathToLibrary;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public Int32 iEntries;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public Int32 iUsed;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public UInt16 iSort;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public UInt16 iVersion;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public Boolean fContainsSubDirectories;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public Int32 iReserved;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
}
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
看上去好像没问题了,呵呵呵,其实这样是不行的,我们得再给C#编译器一些信息,告诉它一些字符数组的大小。然后它们在C#下面长得样子就变成这样:
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
[StructLayout(LayoutKind.Sequential)]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public struct LIBHEADER
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
{
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public char[] sLibName;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public char[] sPathToLibrary;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public Int32 iEntries;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public Int32 iUsed;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public UInt16 iSort;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public UInt16 iVersion;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public Boolean fContainsSubDirectories;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public Int32 iReserved;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
}
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
然后写一个函数负责转换。
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public StructType ConverBytesToStructure<StructType>(byte[] bytesBuffer)
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
{
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
// 检查长度。
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
if (bytesBuffer.Length != Marshal.SizeOf(typeof(StructType)))
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
{
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
throw new ArgumentException("bytesBuffer参数和structObject参数字节长度不一致。");
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
}
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
IntPtr bufferHandler = Marshal.AllocHGlobal(bytesBuffer.Length);
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
for (int index = 0; index < bytesBuffer.Length; index++)
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
{
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
Marshal.WriteByte(bufferHandler, index, bytesBuffer[index]);
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
}
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
StructType structObject = (StructType)Marshal.PtrToStructure(bufferHandler, typeof(StructType));
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
Marshal.FreeHGlobal(bufferHandler);
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
return structObject;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
}
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
然后我们的函数用例是这样:
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
FileStream file = File.OpenRead(@"D:\Jagged Alliance 2 Gold\INSTALL.LOG");
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
byte[] buffer = new byte[Marshal.SizeOf(typeof(LIBHEADER))];
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
file.Read(buffer, 0, buffer.Length);
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
LIBHEADER testValue = CommonTools.ConverBytesToStructure<LIBHEADER>(buffer);
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
string libName = new string(testValue.sLibName);
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
string pathToLibrary= new string(testValue.sPathToLibrary);
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
OK,搞定。
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
如果想去掉后面两句的char数组的转换哪代码如下
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
C#中的结构代码
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public struct LIBHEADER
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
{
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public string sLibName;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public string sPathToLibrary;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public Int32 iEntries;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public Int32 iUsed;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public UInt16 iSort;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public UInt16 iVersion;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public Boolean fContainsSubDirectories;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
public Int32 iReserved;
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
}
![C# 与 C++ 数据类型比较及结构体转换-LMLPHP C# 与 C++ 数据类型比较及结构体转换-LMLPHP]()
其它代码不用作修改便可使用。