C# 与 C++ 数据类型比较及结构体转换

摘要:
转发至http://www.blogjava.net/heting/archive/2010/03/20/315998.htmlC++C#=============================================WORD ushhortDWORD uintCHAR int/字节

转发至http://www.blogjava.net/heting/archive/2010/03/20/315998.html

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

免责声明:文章转载自《C# 与 C++ 数据类型比较及结构体转换》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【Windows编程】系列第九篇:剪贴板使用python中浅拷贝和深拷贝的区别下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C# 简单的区块链实现

1.项目配置 首先新建一个 Asp.Net Core 项目,然后选择 Empty Project(空项目) 类型,建立完成后无需进行任何配置。 2.数据模型 这里我们来创建一个具体的区块数据模型,使用的是 Struct 结构体。 public struct Block { /// <summary> /// 区块位置...

人脸识别1:1对比 (二)

本项目采用Face++第三方接口,项目实现了两张图片的人脸识别和对比,得到相似度等信息 项目步骤如下: 一、所需权限 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permissio...

wpf 阴影效果

一般的方式是重写窗体样式,在图片容器外套一层容器,对它应用DropShadowEffect: <Window x:Class="WpfWindowDropShadowEffect.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"...

org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header

07-Jan-2018 14:28:44.765 INFO [http-nio-8080-exec-8] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header Note: further occurrences of HTTP header pa...

类型信息

一、Class对象 在Object类中定义了以下的方法,此方法将被所有子类继承: public final Class getClass() @Test public void test3() { Person person = new Person(); Class clazz = person.getC...

mysql alter 添加索引

1.添加主键索引 ALTER TABLE `table_name` ADD PRIMARY KEY (`column`) 2.添加唯一索引 ALTER TABLE `table_name` ADD UNIQUE (`column`) 3.添加全文索引 ALTER TABLE `table_name` ADD FULLTEXT (`column`)...