欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#與C++之間類型的對應知識點總結

 更新時間:2019年08月26日 15:51:59   作者:遙望星空  
這篇文章主要介紹了C#與C++之間類型的對應知識點總結,對此有需要的朋友們可以參考下。

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

另: 在進行string轉換時,需要加入前綴[MarshalAs(UnmanagedType.LPStr)]lpdword 對應于 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<struct>

[In] ref <struct>

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#調用DLL文件時參數(shù)對應表

Wtypes.h中的非托管類型 非托管 C語言類型 托管類名 說明

HANDLE void* System.IntPtr 32 位
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.StringBuilder 用 ANSI 修飾。
LPCSTR Const char* System.String 或System.StringBuilder 用 ANSI 修飾。
LPWSTR wchar_t* System.String 或System.StringBuilder 用 Unicode 修飾。
LPCWSTR Const wchar_t* System.String 或System.StringBuilder 用 Unicode 修飾。
FLOAT Float System.Single 32 位
DOUBLE Double System.Double 64 位

習慣用C#寫東西,但平時又會碰到很多要用win32 API的地方,所以經常要用DllImport,但win32函數(shù)的類型寫法是很龐雜的,相信為之困擾的不止我一個,現(xiàn)在我整理一份我個人的理解如下,希望高人不吝賜教。

我的基本原則有如下幾點:

1、下面都是針對32位系統(tǒng)的,所以int是32位.long也是32位;

2、各種句柄類的(H開頭),我認為一律是System.IntPtr,到目前為止沒發(fā)現(xiàn)出錯;如果哪位在使用中出錯,請指出;

3、LP和P,我實在不懂(對C 不太了解),對于LP和P開頭的函數(shù),如果是和STR有關的,一律寫為System.String,像PLCID這樣指向什么東西的,寫為System.UInt32(因為指向另一個地址,那就是指針,指針是32位吧),int之類的數(shù)值型,那我就寫為int[],以方便.net程序引用(寫成System.UInt32的話,給API調用應該也不會出錯,但.net程序就不好引用了)

如有意見,歡迎指教。謝謝

BOOL=System.Int32
BOOLEAN=System.Int32
BYTE=System.UInt16
CHAR=System.Int16
COLORREF=System.UInt32
DWORD=System.UInt32
DWORD32=System.UInt32
DWORD64=System.UInt64
FLOAT=System.Float
HACCEL=System.IntPtr
HANDLE=System.IntPtr
HBITMAP=System.IntPtr
HBRUSH=System.IntPtr
HCONV=System.IntPtr
HCONVLIST=System.IntPtr
HCURSOR=System.IntPtr
HDC=System.IntPtr
HDDEDATA=System.IntPtr
HDESK=System.IntPtr
HDROP=System.IntPtr
HDWP=System.IntPtr
HENHMETAFILE=System.IntPtr
HFILE=System.IntPtr
HFONT=System.IntPtr
HGDIOBJ=System.IntPtr
HGLOBAL=System.IntPtr
HHOOK=System.IntPtr
HICON=System.IntPtr
HIMAGELIST=System.IntPtr
HIMC=System.IntPtr
HINSTANCE=System.IntPtr
HKEY=System.IntPtr
HLOCAL=System.IntPtr
HMENU=System.IntPtr
HMETAFILE=System.IntPtr
HMODULE=System.IntPtr
HMONITOR=System.IntPtr
HPALETTE=System.IntPtr
HPEN=System.IntPtr
HRGN=System.IntPtr
HRSRC=System.IntPtr
HSZ=System.IntPtr
HWINSTA=System.IntPtr
HWND=System.IntPtr
INT=System.Int32
INT32=System.Int32
INT64=System.Int64
LONG=System.Int32
LONG32=System.Int32
LONG64=System.Int64
LONGLONG=System.Int64
LPARAM=System.IntPtr
LPBOOL=System.Int16[]
LPBYTE=System.UInt16[]
LPCOLORREF=System.UInt32[]
LPCSTR=System.String
LPCTSTR=System.String
LPCVOID=System.UInt32
LPCWSTR=System.String
LPDWORD=System.UInt32[]
LPHANDLE=System.UInt32
LPINT=System.Int32[]
LPLONG=System.Int32[]
LPSTR=System.String
LPTSTR=System.String
LPVOID=System.UInt32
LPWORD=System.Int32[]
LPWSTR=System.String
LRESULT=System.IntPtr
PBOOL=System.Int16[]
PBOOLEAN=System.Int16[]
PBYTE=System.UInt16[]
PCHAR=System.Char[]
PCSTR=System.String
PCTSTR=System.String
PCWCH=System.UInt32
PCWSTR=System.UInt32
PDWORD=System.Int32[]
PFLOAT=System.Float[]
PHANDLE=System.UInt32
PHKEY=System.UInt32
PINT=System.Int32[]
PLCID=System.UInt32
PLONG=System.Int32[]
PLUID=System.UInt32
PSHORT=System.Int16[]
PSTR=System.String
PTBYTE=System.Char[]
PTCHAR=System.Char[]
PTSTR=System.String
PUCHAR=System.Char[]
PUINT=System.UInt32[]
PULONG=System.UInt32[]
PUSHORT=System.UInt16[]
PVOID=System.UInt32
PWCHAR=System.Char[]
PWORD=System.Int16[]
PWSTR=System.String
REGSAM=System.UInt32
SC_HANDLE=System.IntPtr
SC_LOCK=System.IntPtr
SHORT=System.Int16
SIZE_T=System.UInt32
SSIZE_=System.UInt32
TBYTE=System.Char
TCHAR=System.Char
UCHAR=System.

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的方法詳解

    在C#程序中注入惡意DLL的方法詳解

    為什么?Windbg?附加到?C#?程序后,程序就處于中斷狀態(tài)了?它到底是如何實現(xiàn)的?其實簡而言之就是線程的遠程注入,這一篇就展開說一下
    2022-09-09
  • c#文件的I/O基本操作

    c#文件的I/O基本操作

    System.IO命名空間包含允許在數(shù)據(jù)流和文件上進行同步,異步及寫入的類型,下面是關于c#文件的I/O基本操作講解,需要的朋友可以參考下
    2014-03-03
  • C#使用Consul集群進行服務注冊與發(fā)現(xiàn)

    C#使用Consul集群進行服務注冊與發(fā)現(xiàn)

    這篇文章主要介紹了C#使用Consul集群進行服務注冊與發(fā)現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • C#實現(xiàn)簡易灰度圖和酷炫HeatMap熱力圖winform(附DEMO)

    C#實現(xiàn)簡易灰度圖和酷炫HeatMap熱力圖winform(附DEMO)

    本文主要介紹了C#實現(xiàn)簡易灰度圖和酷炫HeatMap熱力圖winform(附DEMO),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 淺聊一下C#中內存映射文件的玩法

    淺聊一下C#中內存映射文件的玩法

    內存映射文件是怎么玩的,說實話這東西理論我相信很多朋友都知道,就是將文件映射到進程的虛擬地址,說起來很容易,那如何讓大家眼見為實呢,本文就來和大家簡單聊聊
    2023-06-06
  • 使用C#實現(xiàn)自己封裝的Modbus工具類庫

    使用C#實現(xiàn)自己封裝的Modbus工具類庫

    Modbus通訊協(xié)議在工控行業(yè)的應用是很多的,并且也是上位機開發(fā)的基本技能之一,所以本文主要為大家介紹了如何使用C#封裝一個Modbus工具類庫,需要的可以參考下
    2024-02-02
  • C#實現(xiàn)利用Linq操作Xml文件

    C#實現(xiàn)利用Linq操作Xml文件

    這篇文章主要為大家詳細介紹了C#如何利用Linq實現(xiàn)操作Xml文件,文中的示例代碼講解詳細,對我們學習C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C#實現(xiàn)Excel表數(shù)據(jù)導入Sql Server數(shù)據(jù)庫中的方法

    C#實現(xiàn)Excel表數(shù)據(jù)導入Sql Server數(shù)據(jù)庫中的方法

    這篇文章主要介紹了C#實現(xiàn)Excel表數(shù)據(jù)導入Sql Server數(shù)據(jù)庫中的方法,結合實例形式詳細分析了C#讀取Excel表數(shù)據(jù)及導入Sql Server數(shù)據(jù)庫的具體操作步驟與相關操作技巧,需要的朋友可以參考下
    2017-05-05
  • C#數(shù)據(jù)庫操作的示例詳解

    C#數(shù)據(jù)庫操作的示例詳解

    這篇文章主要通過一些示例為大家詳細介紹了C#中數(shù)據(jù)庫操作用法,文中的示例代碼講解詳細,具有有一定的借鑒價值,需要的可以參考一下
    2022-07-07
  • 客戶端實現(xiàn)藍牙接收(C#)知識總結

    客戶端實現(xiàn)藍牙接收(C#)知識總結

    網上有關藍牙接收的資料很多,使用起來也很簡單,但是我覺得還是有必要把這些知識總結下來,藍牙開發(fā)需要用到一個第三方的庫InTheHand.Net.Personal.dll,感興趣的朋友可以了解下,或許對你有所幫助
    2013-02-02

最新評論