C# 与 C++ 数据类型比较及结构体转换-LMLPHPC++            C#
C# 与 C++ 数据类型比较及结构体转换-LMLPHP=====================================
C# 与 C++ 数据类型比较及结构体转换-LMLPHPWORD            ushort
C# 与 C++ 数据类型比较及结构体转换-LMLPHPDWORD            uint
C# 与 C++ 数据类型比较及结构体转换-LMLPHPUCHAR            int/byte   大部分情况都可以使用int代替,而如果需要严格对齐的话则应该用bytebyte 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPUCHAR*            string/IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPunsigned char*         [MarshalAs(UnmanagedType.LPArray)]byte[]/?(Intptr)
C# 与 C++ 数据类型比较及结构体转换-LMLPHPchar*            string
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPCTSTR            string
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPTSTR            [MarshalAs(UnmanagedType.LPTStr)] string
C# 与 C++ 数据类型比较及结构体转换-LMLPHPlong            int
C# 与 C++ 数据类型比较及结构体转换-LMLPHPulong               uint
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHandle            IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHWND            IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPvoid*            IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPint            int
C# 与 C++ 数据类型比较及结构体转换-LMLPHPint*            ref int
C# 与 C++ 数据类型比较及结构体转换-LMLPHP*int            IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPunsigned int        uint
C# 与 C++ 数据类型比较及结构体转换-LMLPHPCOLORREF                uint 
C# 与 C++ 数据类型比较及结构体转换-LMLPHP
C# 与 C++ 数据类型比较及结构体转换-LMLPHP 
C# 与 C++ 数据类型比较及结构体转换-LMLPHP
C# 与 C++ 数据类型比较及结构体转换-LMLPHP 
C# 与 C++ 数据类型比较及结构体转换-LMLPHP
C# 与 C++ 数据类型比较及结构体转换-LMLPHPAPI与C#的数据类型对应关系表 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPAPI数据类型 类型描述 C#类型 API数据类型 类型描述 C#类型 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPWORD 16位无符号整数 ushort CHAR 字符 char 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLONG 32位无符号整数 int DWORDLONG 64位长整数 long 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPDWORD 32位无符号整数 uint HDC 设备描述表句柄 int 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHANDLE 句柄,32位整数 int HGDIOBJ GDI对象句柄 int 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPUINT 32位无符号整数 uint HINSTANCE 实例句柄 int 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPBOOL 32位布尔型整数 bool HWM 窗口句柄 int 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPSTR 指向字符的32位指针 string HPARAM 32位消息参数 int 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPCSTR 指向常字符的32位指针 String LPARAM 32位消息参数 int 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPBYTE 字节 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++ 数据类型比较及结构体转换-LMLPHPBOOL=System.Int32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPBOOLEAN=System.Int32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPBYTE=System.UInt16
C# 与 C++ 数据类型比较及结构体转换-LMLPHPCHAR=System.Int16
C# 与 C++ 数据类型比较及结构体转换-LMLPHPCOLORREF=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPDWORD=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPDWORD32=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPDWORD64=System.UInt64
C# 与 C++ 数据类型比较及结构体转换-LMLPHPFLOAT=System.Float
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHACCEL=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHANDLE=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHBITMAP=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHBRUSH=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHCONV=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHCONVLIST=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHCURSOR=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHDC=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHDDEDATA=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHDESK=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHDROP=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHDWP=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHENHMETAFILE=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHFILE=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHFONT=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHGDIOBJ=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHGLOBAL=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHHOOK=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHICON=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHIMAGELIST=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHIMC=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHINSTANCE=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHKEY=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHLOCAL=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHMENU=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHMETAFILE=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHMODULE=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHMONITOR=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHPALETTE=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHPEN=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHRGN=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHRSRC=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHSZ=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHWINSTA=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHWND=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPINT=System.Int32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPINT32=System.Int32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPINT64=System.Int64
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLONG=System.Int32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLONG32=System.Int32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLONG64=System.Int64
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLONGLONG=System.Int64
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPARAM=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPBOOL=System.Int16[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPBYTE=System.UInt16[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPCOLORREF=System.UInt32[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPCSTR=System.String
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPCTSTR=System.String
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPCVOID=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPCWSTR=System.String
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPDWORD=System.UInt32[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPHANDLE=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPINT=System.Int32[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPLONG=System.Int32[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPSTR=System.String
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPTSTR=System.String
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPVOID=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPWORD=System.Int32[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPWSTR=System.String
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLRESULT=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPBOOL=System.Int16[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPBOOLEAN=System.Int16[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPBYTE=System.UInt16[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPCHAR=System.Char[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPCSTR=System.String
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPCTSTR=System.String
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPCWCH=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPCWSTR=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPDWORD=System.Int32[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPFLOAT=System.Float[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPHANDLE=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPHKEY=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPINT=System.Int32[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPLCID=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPLONG=System.Int32[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPLUID=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPSHORT=System.Int16[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPSTR=System.String
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPTBYTE=System.Char[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPTCHAR=System.Char[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPTSTR=System.String
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPUCHAR=System.Char[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPUINT=System.UInt32[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPULONG=System.UInt32[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPUSHORT=System.UInt16[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPVOID=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPWCHAR=System.Char[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPWORD=System.Int16[]
C# 与 C++ 数据类型比较及结构体转换-LMLPHPPWSTR=System.String
C# 与 C++ 数据类型比较及结构体转换-LMLPHPREGSAM=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPSC_HANDLE=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPSC_LOCK=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHPSHORT=System.Int16
C# 与 C++ 数据类型比较及结构体转换-LMLPHPSIZE_T=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPSSIZE_=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPTBYTE=System.Char
C# 与 C++ 数据类型比较及结构体转换-LMLPHPTCHAR=System.Char
C# 与 C++ 数据类型比较及结构体转换-LMLPHPUCHAR=System.Byte
C# 与 C++ 数据类型比较及结构体转换-LMLPHPUINT=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPUINT32=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPUINT64=System.UInt64
C# 与 C++ 数据类型比较及结构体转换-LMLPHPULONG=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPULONG32=System.UInt32
C# 与 C++ 数据类型比较及结构体转换-LMLPHPULONG64=System.UInt64
C# 与 C++ 数据类型比较及结构体转换-LMLPHPULONGLONG=System.UInt64
C# 与 C++ 数据类型比较及结构体转换-LMLPHPUSHORT=System.UInt16
C# 与 C++ 数据类型比较及结构体转换-LMLPHPWORD=System.UInt16
C# 与 C++ 数据类型比较及结构体转换-LMLPHPWPARAM=System.IntPtr
C# 与 C++ 数据类型比较及结构体转换-LMLPHP
C# 与 C++ 数据类型比较及结构体转换-LMLPHP<---------补充----------->
C# 与 C++ 数据类型比较及结构体转换-LMLPHP
C# 与 C++ 数据类型比较及结构体转换-LMLPHPWtypes.h 中的非托管类型    非托管C 语言类型    托管类名       说明 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPHANDLE                        void*                   System.IntPtr  32 位 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPBYTE                            unsigned char       System.Byte    8 位 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPSHORT                         short                    System.Int16   16 位 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPWORD                          unsigned short      System.UInt16  16 位 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPINT                               int                       System.Int32   32 位 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPUINT                             unsigned int         System.UInt32  32 位 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLONG                            long                    System.Int32   32 位 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPBOOL                            long                    System.Int32   32 位 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPDWORD                        unsigned long       System.UInt32  32 位 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPULONG                          unsigned long      System.UInt32  32 位 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPCHAR                            char                    System.Char    用 ANSI 修饰。 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPSTR                           char*                  System.String 或 System.StringBuilder 用 ANSI 修饰。 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPCSTR                         Const char*         System.String 或 System.StringBuilder 用 ANSI 修饰。 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPWSTR                        wchar_t*             System.String 或 System.StringBuilder 用 Unicode 修饰。 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPLPCWSTR                      Const wchar_t*    System.String 或 System.StringBuilder 用 Unicode 修饰。 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPFLOAT                           Float                    System.Single 32 位 
C# 与 C++ 数据类型比较及结构体转换-LMLPHPDOUBLE                        Double                 System.Double 64 位 
C# 与 C++ 数据类型比较及结构体转换-LMLPHP
C# 与 C++ 数据类型比较及结构体转换-LMLPHP 
C# 与 C++ 数据类型比较及结构体转换-LMLPHP
C# 与 C++ 数据类型比较及结构体转换-LMLPHP 
C# 与 C++ 数据类型比较及结构体转换-LMLPHP
C# 与 C++ 数据类型比较及结构体转换-LMLPHPC/C++中的结构类型数据在C#下的转换
C# 与 C++ 数据类型比较及结构体转换-LMLPHP
C# 与 C++ 数据类型比较及结构体转换-LMLPHP 
C# 与 C++ 数据类型比较及结构体转换-LMLPHP在做项目移植的时候,经常会碰到数据类型的转换,而我这一次碰到的是C/C++中的结构怎样转换到C#。折腾了一个晚上终于有一个完美的方案。
C# 与 C++ 数据类型比较及结构体转换-LMLPHP例如我们在C/C++下的结构数据如下:
C# 与 C++ 数据类型比较及结构体转换-LMLPHPtypedef struct 
C# 与 C++ 数据类型比较及结构体转换-LMLPHP{
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    char sLibName[ 256 ];
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    char sPathToLibrary[ 256 ];
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    INT32        iEntries;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    INT32        iUsed;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    UINT16    iSort;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    UINT16    iVersion;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    BOOLEAN    fContainsSubDirectories;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    INT32        iReserved;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP} LIBHEADER;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP我们想把它转成C#下的结构类型如下:
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    public struct LIBHEADER
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    {
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public char[] sLibName;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public char[] sPathToLibrary;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public Int32 iEntries;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public Int32 iUsed;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public UInt16 iSort;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public UInt16 iVersion;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public Boolean fContainsSubDirectories;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public Int32 iReserved;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    }
C# 与 C++ 数据类型比较及结构体转换-LMLPHP看上去好像没问题了,呵呵呵,其实这样是不行的,我们得再给C#编译器一些信息,告诉它一些字符数组的大小。然后它们在C#下面长得样子就变成这样:
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    [StructLayout(LayoutKind.Sequential)]
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    public struct LIBHEADER
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    {
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public char[] sLibName;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public char[] sPathToLibrary;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public Int32 iEntries;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public Int32 iUsed;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public UInt16 iSort;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public UInt16 iVersion;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public Boolean fContainsSubDirectories;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public Int32 iReserved;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    }
C# 与 C++ 数据类型比较及结构体转换-LMLPHP然后写一个函数负责转换。
C# 与 C++ 数据类型比较及结构体转换-LMLPHPpublic StructType ConverBytesToStructure<StructType>(byte[] bytesBuffer)
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        {
C# 与 C++ 数据类型比较及结构体转换-LMLPHP            // 检查长度。
C# 与 C++ 数据类型比较及结构体转换-LMLPHP            if (bytesBuffer.Length != Marshal.SizeOf(typeof(StructType)))
C# 与 C++ 数据类型比较及结构体转换-LMLPHP            {
C# 与 C++ 数据类型比较及结构体转换-LMLPHP                throw new ArgumentException("bytesBuffer参数和structObject参数字节长度不一致。");
C# 与 C++ 数据类型比较及结构体转换-LMLPHP            }
C# 与 C++ 数据类型比较及结构体转换-LMLPHP
C# 与 C++ 数据类型比较及结构体转换-LMLPHP            IntPtr bufferHandler = Marshal.AllocHGlobal(bytesBuffer.Length);
C# 与 C++ 数据类型比较及结构体转换-LMLPHP            for (int index = 0; index < bytesBuffer.Length; index++)
C# 与 C++ 数据类型比较及结构体转换-LMLPHP            {
C# 与 C++ 数据类型比较及结构体转换-LMLPHP                Marshal.WriteByte(bufferHandler, index, bytesBuffer[index]);
C# 与 C++ 数据类型比较及结构体转换-LMLPHP            }
C# 与 C++ 数据类型比较及结构体转换-LMLPHP            StructType structObject = (StructType)Marshal.PtrToStructure(bufferHandler, typeof(StructType));
C# 与 C++ 数据类型比较及结构体转换-LMLPHP            Marshal.FreeHGlobal(bufferHandler);
C# 与 C++ 数据类型比较及结构体转换-LMLPHP            return structObject;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        }
C# 与 C++ 数据类型比较及结构体转换-LMLPHP然后我们的函数用例是这样:
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    FileStream file = File.OpenRead(@"D:\Jagged Alliance 2 Gold\INSTALL.LOG");
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    byte[] buffer = new byte[Marshal.SizeOf(typeof(LIBHEADER))];
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    file.Read(buffer, 0, buffer.Length);
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    LIBHEADER testValue = CommonTools.ConverBytesToStructure<LIBHEADER>(buffer);
C# 与 C++ 数据类型比较及结构体转换-LMLPHPstring libName = new string(testValue.sLibName);
C# 与 C++ 数据类型比较及结构体转换-LMLPHPstring pathToLibrary= new string(testValue.sPathToLibrary);
C# 与 C++ 数据类型比较及结构体转换-LMLPHPOK,搞定。
C# 与 C++ 数据类型比较及结构体转换-LMLPHP如果想去掉后面两句的char数组的转换哪代码如下
C# 与 C++ 数据类型比较及结构体转换-LMLPHPC#中的结构代码
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    public struct LIBHEADER
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    {
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public string sLibName;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public string sPathToLibrary;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public Int32 iEntries;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public Int32 iUsed;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public UInt16 iSort;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public UInt16 iVersion;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public Boolean fContainsSubDirectories;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP        public Int32 iReserved;
C# 与 C++ 数据类型比较及结构体转换-LMLPHP    }
C# 与 C++ 数据类型比较及结构体转换-LMLPHP其它代码不用作修改便可使用。
05-08 08:15
查看更多