免费国产网站_秋霞午夜一区二区三区视频_99热在线看_日韩精品久久一区二区_午夜看一级毛片_天天鲁在视频在线观看

  • C#與C++數(shù)據(jù)類型對應(yīng)總結(jié)

    2019/5/9??????點(diǎn)擊:

    C#與C++數(shù)據(jù)類型對應(yīng)總結(jié)


    Windows Data Type

    .NET Data Type

    BOOL, BOOLEAN

    Boolean or Int32

    BSTR

    String

    BYTE

    Byte

    CHAR

    Char

    DOUBLE

    Double

    DWORD

    Int32 or UInt32

    FLOAT

    Single

    HANDLE (and all other handle types, such as HFONT and HMENU)

    IntPtr, UintPtr or HandleRef

    HRESULT

    Int32 or UInt32

    INT

    Int32

    LANGID

    Int16 or UInt16

    LCID

    Int32 or UInt32

    LONG

    Int32

    LPARAM

    IntPtr, UintPtr or Object

    LPCSTR

    String

    LPCTSTR

    String

    LPCWSTR

    String

    LPSTR

    String or StringBuilder*

    LPTSTR

    String or StringBuilder

    LPWSTR

    String or StringBuilder

    LPVOID

    IntPtr, UintPtr or Object

    LRESULT

    IntPtr

    SAFEARRAY

    .NET array type

    SHORT

    Int16

    TCHAR

    Char

    UCHAR

    SByte

    UINT

    Int32 or UInt32

    ULONG

    Int32 or UInt32

    VARIANT

    Object

    VARIANT_BOOL

    Boolean

    WCHAR

    Char

    WORD

    Int16 or UInt16

    WPARAM

    IntPtr, UintPtr or Object

    另: 在進(jìn)行string轉(zhuǎn)換時(shí),需要加入前綴[MarshalAs(UnmanagedType.LPStr)]lpdword 對應(yīng)于 ref int


    C/C++

    C#

    HANDLE, LPDWORD, LPVOID, void*

    IntPtr

    LPCTSTR, LPCTSTR, LPSTR, char*, const char*, Wchar_t*, LPWSTR

    String [in], StringBuilder [in, out]

    DWORD, unsigned long, Ulong

    UInt32, [MarshalAs(UnmanagedType.U4)]

    bool

    bool

    LP

    [In] ref

    SIZE_T

    uint

    LPDWORD

    out uint

    LPTSTR

    [Out] StringBuilder

    PULARGE_INTEGER

    out ulong

    WORD

    uInt16

    Byte, unsigned char

    byte

    Short

    Int16

    Long, int

    Int32

    float

    single

    double

    double

    NULL pointer

    IntPtr.Zero

    Uint

    Uint32

    C#調(diào)用DLL文件時(shí)參數(shù)對應(yīng)表

    Wtypes.h 中的非托管類型

    非托管 C 語言類型

    托管類名

    說明

    HANDLE

    void*

    System.IntPtr

    在 32 位 Windows 操作系統(tǒng)上為 32 位,在 64 位 Windows 操作系統(tǒng)上為 64 位。

    BYTE

    unsigned char

    System.Byte

    8 位

    SHORT

    short

    System.Int16

    16 位

    WORD

    unsigned short

    System.UInt16

    16 位

    INT

    int

    System.Int32

    32 位

    UINT

    unsigned int

    System.UInt32

    32 位

    LONG

    long

    System.Int32

    32 位

    BOOL

    long

    System.Int32

    32 位

    DWORD

    unsigned long

    System.UInt32

    32 位

    ULONG

    unsigned long

    System.UInt32

    32 位

    CHAR

    char

    System.Char

    用 ANSI 修飾。

    LPSTR

    char*

    System.String 或   System.Text.StringBuilder

    用 ANSI 修飾。

    LPCSTR

    Const char*

    System.String 或   System.Text.StringBuilder

    用 ANSI 修飾。

    LPWSTR

    wchar_t*

    System.String 或   System.Text.StringBuilder

    用 Unicode 修飾。

    LPCWSTR

    Const wchar_t*

    System.String 或   System.Text.StringBuilder

    用 Unicode 修飾。

    FLOAT

    Float

    System.Single

    32 位

    DOUBLE

    Double

    System.Double

    64 位

      //C++中的DLL函數(shù)原型為
      //extern "C" __declspec(dllexport) bool 方法名一(const char* 變量名1, unsigned char* 變量名2)
      //extern "C" __declspec(dllexport) bool 方法名二(const unsigned char* 變量名1, char* 變量名2)

      //C#調(diào)用C++的DLL搜集整理的所有數(shù)據(jù)類型轉(zhuǎn)換方式,可能會(huì)有重復(fù)或者多種方案,自己多測試
      //c++:HANDLE(void *) ---- c#:System.IntPtr  
      //c++:Byte(unsigned char) ---- c#:System.Byte  
      //c++:SHORT(short) ---- c#:System.Int16  
      //c++:WORD(unsigned short) ---- c#:System.UInt16  
      //c++:INT(int) ---- c#:System.Int16
      //c++:INT(int) ---- c#:System.Int32  
      //c++:UINT(unsigned int) ---- c#:System.UInt16
      //c++:UINT(unsigned int) ---- c#:System.UInt32
      //c++:LONG(long) ---- c#:System.Int32  
      //c++:ULONG(unsigned long) ---- c#:System.UInt32  
      //c++:DWORD(unsigned long) ---- c#:System.UInt32  
      //c++:DECIMAL ---- c#:System.Decimal  
      //c++:BOOL(long) ---- c#:System.Boolean  
      //c++:CHAR(char) ---- c#:System.Char  
      //c++:LPSTR(char *) ---- c#:System.String  
      //c++:LPWSTR(wchar_t *) ---- c#:System.String  
      //c++:LPCSTR(const char *) ---- c#:System.String  
      //c++:LPCWSTR(const wchar_t *) ---- c#:System.String  
      //c++:PCAHR(char *) ---- c#:System.String  
      //c++:BSTR ---- c#:System.String  
      //c++:FLOAT(float) ---- c#:System.Single  
      //c++:DOUBLE(double) ---- c#:System.Double  
      //c++:VARIANT ---- c#:System.Object  
      //c++:PBYTE(byte *) ---- c#:System.Byte[] 

      //c++:BSTR ---- c#:StringBuilder
      //c++:LPCTSTR ---- c#:StringBuilder
      //c++:LPCTSTR ---- c#:string
      //c++:LPTSTR ---- c#:[MarshalAs(UnmanagedType.LPTStr)] string  
      //c++:LPTSTR 輸出變量名 ---- c#:StringBuilder 輸出變量名
      //c++:LPCWSTR ---- c#:IntPtr
      //c++:BOOL ---- c#:bool   
      //c++:HMODULE ---- c#:IntPtr   
      //c++:HINSTANCE ---- c#:IntPtr  
      //c++:結(jié)構(gòu)體 ---- c#:public struct 結(jié)構(gòu)體{};  
      //c++:結(jié)構(gòu)體 **變量名 ---- c#:out 變量名 //C#中提前申明一個(gè)結(jié)構(gòu)體實(shí)例化后的變量名
      //c++:結(jié)構(gòu)體 &變量名 ---- c#:ref 結(jié)構(gòu)體 變量名

      //c++:WORD ---- c#:ushort
      //c++:DWORD ---- c#:uint
      //c++:DWORD ---- c#:int

      //c++:UCHAR ---- c#:int
      //c++:UCHAR ---- c#:byte
      //c++:UCHAR* ---- c#:string
      //c++:UCHAR* ---- c#:IntPtr

      //c++:GUID ---- c#:Guid
      //c++:Handle ---- c#:IntPtr
      //c++:HWND ---- c#:IntPtr
      //c++:DWORD ---- c#:int
      //c++:COLORREF ---- c#:uint

      //c++:unsigned char ---- c#:byte
      //c++:unsigned char * ---- c#:ref byte
      //c++:unsigned char * ---- c#:[MarshalAs(UnmanagedType.LPArray)] byte[]
      //c++:unsigned char * ---- c#:[MarshalAs(UnmanagedType.LPArray)] Intptr

      //c++:unsigned char & ---- c#:ref byte
      //c++:unsigned char 變量名 ---- c#:byte 變量名
      //c++:unsigned short 變量名 ---- c#:ushort 變量名
      //c++:unsigned int 變量名 ---- c#:uint 變量名
      //c++:unsigned long 變量名 ---- c#:ulong 變量名

      //c++:char 變量名 ---- c#:byte 變量名 //C++中一個(gè)字符用一個(gè)字節(jié)表示,C#中一個(gè)字符用兩個(gè)字節(jié)表示
      //c++:char 數(shù)組名[數(shù)組大小] ---- c#:MarshalAs(UnmanagedType.ByValTStr, SizeConst = 數(shù)組大小)] public string 數(shù)組名; ushort

      //c++:char * ---- c#:string //傳入?yún)?shù)
      //c++:char * ---- c#:StringBuilder//傳出參數(shù)
      //c++:char *變量名 ---- c#:ref string 變量名
      //c++:char *輸入變量名 ---- c#:string 輸入變量名
      //c++:char *輸出變量名 ---- c#:[MarshalAs(UnmanagedType.LPStr)] StringBuilder 輸出變量名

      //c++:char ** ---- c#:string
      //c++:char **變量名 ---- c#:ref string 變量名
      //c++:const char * ---- c#:string
      //c++:char[] ---- c#:string
      //c++:char 變量名[數(shù)組大小] ---- c#:[MarshalAs(UnmanagedType.ByValTStr,SizeConst=數(shù)組大小)] public string 變量名; 

      //c++:struct 結(jié)構(gòu)體名 *變量名 ---- c#:ref 結(jié)構(gòu)體名 變量名
      //c++:委托 變量名 ---- c#:委托 變量名

      //c++:int ---- c#:int
      //c++:int ---- c#:ref int
      //c++:int & ---- c#:ref int
      //c++:int * ---- c#:ref int //C#中調(diào)用前需定義int 變量名 = 0;

      //c++:*int ---- c#:IntPtr
      //c++:int32 PIPTR * ---- c#:int32[]
      //c++:float PIPTR * ---- c#:float[]

      //c++:double** 數(shù)組名 ---- c#:ref double 數(shù)組名
      //c++:double*[] 數(shù)組名 ---- c#:ref double 數(shù)組名
      //c++:long ---- c#:int
      //c++:ulong ---- c#:int    
      //c++:UINT8 * ---- c#:ref byte //C#中調(diào)用前需定義byte 變量名 = new byte();  

      //c++:handle ---- c#:IntPtr
      //c++:hwnd ---- c#:IntPtr
       //c++:void * ---- c#:IntPtr   
      //c++:void * user_obj_param ---- c#:IntPtr user_obj_param
      //c++:void * 對象名稱 ---- c#:([MarshalAs(UnmanagedType.AsAny)]Object 對象名稱

      //c++:char, INT8, SBYTE, CHAR ---- c#:System.SByte   
      //c++:short, short int, INT16, SHORT ---- c#:System.Int16   
      //c++:int, long, long int, INT32, LONG32, BOOL , INT ---- c#:System.Int32   
      //c++:__int64, INT64, LONGLONG ---- c#:System.Int64   
      //c++:unsigned char, UINT8, UCHAR , BYTE ---- c#:System.Byte   
      //c++:unsigned short, UINT16, USHORT, WORD, ATOM, WCHAR , __wchar_t ---- c#:System.UInt16   
      //c++:unsigned, unsigned int, UINT32, ULONG32, DWORD32, ULONG, DWORD, UINT ---- c#:System.UInt32   
      //c++:unsigned __int64, UINT64, DWORDLONG, ULONGLONG ---- c#:System.UInt64   
      //c++:float, FLOAT ---- c#:System.Single   
      //c++:double, long double, DOUBLE ---- c#:System.Double  

      //Win32 Types ---- CLR Type   

      //Struct需要在C#里重新定義一個(gè)Struct
      //CallBack回調(diào)函數(shù)需要封裝在一個(gè)委托里,delegate static extern int FunCallBack(string str);

      //unsigned char** ppImage替換成IntPtr ppImage
      //int& nWidth替換成ref int nWidth
      //int*, int&, 則都可用 ref int 對應(yīng)
      //雙針指類型參數(shù),可以用 ref IntPtr
      //函數(shù)指針使用c++: typedef double (*fun_type1)(double); 對應(yīng) c#:public delegate double fun_type1(double);
      //char* 的操作c++: char*; 對應(yīng) c#:StringBuilder;
      //c#中使用指針:在需要使用指針的地方 加 unsafe

      //unsigned char對應(yīng)public byte
      /*
      * typedef void (*CALLBACKFUN1W)(wchar_t*, void* pArg);
      * typedef void (*CALLBACKFUN1A)(char*, void* pArg);
      * bool BIOPRINT_SENSOR_API dllFun1(CALLBACKFUN1 pCallbackFun1, void* pArg);
      * 調(diào)用方式為
      * [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
      * public delegate void CallbackFunc1([MarshalAs(UnmanagedType.LPWStr)] StringBuilder strName, IntPtr pArg);
      *  
      */

    主站蜘蛛池模板: 久久久国产精品视频_免费高清自慰区_320lu官网自拍小视频_youjizz中国版在线视频_99久久久国产精品免费消防器_国产青榴社区91精品 | 亚洲精品久久无码AV片俺去也_久久久不卡国产精品一区二区_影音先锋资源站男人网_国产精品成品人品_久久国产劲暴∨内射_日韩一区二区三区国产 | 亚洲免费视频成人_小荡货你夹的老师好紧_真实国产普通话对白乱子子伦视频_牛和人交VIDE欧美XX00186_四虎国产免费_国产成人午夜 | 国产视频三级在线观看播放_2021av网_成人h动漫精品一区二区器材_一级女人真人毛片免费看_91网唐先生18部在线观看_国产精品一级毛片av | 91性高湖久久久久久久久网站_催眠极品YIN荡人妻合集H_国产精品久久久久久妇女6080_亚洲欧美在线观看_少妇老师寂寞高潮免费A片_一区二区三区视频国产日韩 | 国产成人在线视频观看_亚洲成av人影院在线观看_sm另类首页制服av_www.爱久久_日韩精品无码专区免费视频_japanese成熟丰满熟妇 | 久久国产夜色精品鲁鲁99_久久99精品久久久久麻豆_五月婷婷狠狠干_欧美韩国三级在线观看不卡_亚洲精品黄色在线观看_成人综合在线观看 | 久久加久久_蜜桃精品在线_日韩精品一区二区三区色欲AV_男女啪啪做爰高潮www成人福利_午夜无码性爽快影院6080_亚洲人成色77777 | 毛片在线视频_99热99re6国产在线播放_欧美私人家庭影院_拔插拔插免费视频_国产亚洲精品区_欧美巨乳在线观看 | 色视频线观看在线网站_久久精品蜜芽亚洲国产AV_国产日韩a_精品国产国语对白久久免费_欧美韩国国产_久久精品中文字幕免费 | 激情午夜影院_日本精品一区二区在线观看_欧美88_超碰91在线观看_作爱视频在线免费观看_88微拍福利 | 少妇特黄a一区二区三区_色精品视频_欧美午夜一区二区三区免费大片_日本国产网站_亚洲第一av网站_亚洲国产成人久久一区二区三区 | 一区二区免费高清视频_国产一级二级在线播放_久久久久99_欧美色图狠狠操_日本久久精品一区二区三区_亚洲av片不卡无码一 | 6080一区_亚洲视频八区_亚洲专区中文字幕_91成熟丰满女人少妇尤物_91久久精品网_九九视频九九热 | 全程露脸3p在线观看91_亚洲精品国产成人片在线观看_中文字幕一区二_国模大尺度福利视频在线_精品国偷自产在线_xxxxhd69日本hd | 久久久久久久久久久蜜桃_亚洲av成人综合网_国产精品高潮呻吟久久a_在线免费中文字幕_超91视频_色鬼7777久久 | 国产精品97色色_992tv精品tv视频_亚洲成人免费在线观看_师兄啊师兄动漫在线看_二区影院_久久久亚洲影院 | 免费看毛片基地_欧美激情一区二区在线_欧美精品国产一区二区_男人天堂影院WWW94_精品久久久久中文字幕小说_狠狠干女人 | 殴美中文字幕在线看_青青草视频播放器_久久久久看A片成人小说_亚洲尤物内射超碰_国产无码在线一二三_色翁荡熄又大又硬又粗又动态图 | 少妇张开腿露私下_一区二区三区国产片_色女子av_午夜看看_国产亚洲小视频线播放_欧美日韩国产二区 | 国产国产人免费人成免费视频_91欧美在线_大陆老熟女嗷嗷叫AV在线_中国美女牲交视频_国产免费成人_av在线短片 | 久久久久久久久久久蜜桃_亚洲av成人综合网_国产精品高潮呻吟久久a_在线免费中文字幕_超91视频_色鬼7777久久 | 亚洲精品国产综合区久久久久久久_亚洲精品一区二区在线观看_在线爱爱_午夜免费影院_午夜传媒_岛国激情 | 97操操_成人中文字幕在线_成全我在线观看免费观看_欧美成人V片观看_a成人在线_黄色片久久久 | 亚洲日韩第一页_美女视频黄免费_av亚洲产国偷v产偷v自拍软件_国产精品一区久久人人爽_亚洲精品日韩精品_日日夜夜精品免费看 | 深夜精品福利_成人在线免费视频播放_亚洲成人视屏_精品国产欧美另类一区_亚洲国产精品成人久久蜜臀_国产精品亚 | 爱逼爱操_亚洲三级黄色_99久久欧美日韩国产二区_农村一级片_女人私视频免费观看_色欧美视频 | 国产成人区_蜜臀av一二三区_www.色视频_懂色av成人一区二区三区_亚洲欧美日本a∨在线观看_国产免费av片在线看 | 精品二三区_97国产免费_中文字幕爱爱_日本一道综合久久aⅴ免费_香蕉AV福利精品导航_人人澡人人妻人人爽人人蜜桃麻豆 | 曰韩黄色一级片_精品国产成人网站一区在线_国产一二三在线视频_涩涩伊人_黄色网av_精品国产久 | 久久久观看_大地影视mv高清视频_麻豆免费版在线观看_日韩精品少妇无码受不了_欧美一区二区观看_av资源网在线观看 | 欧美黄片免费观看_久久91视频观看_黄色星星_黄色视屏免费看_国产精品美女自拍视频_yp在线 | 免费观看视频91_久久91热_www.麻豆传媒_国产剧情资源在线视频_午夜毛片网_成全高清免费观看MV动漫 | 性色A∨人人爽网站HD_亚洲AV日韩AV高清在线播放_重口女人毛片免费_欧美综合在线视频_国内精品久久久_免费在线观看的av | 97久久精品无码一区二区_久久丫亚洲一区二区_99久久一区二区_日本中文字幕在线观看全_亚洲成色综合网站yy_爱爱爱视频免费看 | 亚洲天堂一_日韩欧美在线观看视频网站_波多野久久_特黄a级三级三级野战_国产91欧美情侣在线_99re6热在线精品视频播放速度 | 亚洲精品毛A片久久久爽_中文字幕无码久久一区_欧美女优在线视频_国产一极毛片_日产乱码一二三区别免费演员表_精品婷婷 | 成人黄色三级毛片_亚洲福利免费_在线另类播放_黄色的视频在线观看_国产一区二区91_国产毛片精品一区二区 | 三级日本_好男人好视频好资源在线观看_国产老肥熟一区二区三区_国产线播放免费人成视频播放_亚洲视频2_国产无遮挡A片又黄又爽软件 | 亚洲午夜免费_亚洲国产尤物_久久黄色片_国产无遮挡一区二区三区毛片日本_熟女熟妇伦av网站_国产区精品在线观看 | 欧美日韩在线视频一区_日韩城人视频_久久精品国产亚洲an天堂_棈品国产乱码久久久久久影片_成人免费观看av_日本精品久久久一区二区三区 |