C++ 类型 和 C#类型 互转

Windows Data Type.NET Data Type
BOOL, BOOLEANBoolean or Int32
BSTRString
BYTEByte
CHARChar
DOUBLEDouble
DWORDInt32 or UInt32
FLOATSingle
HANDLE (and all other handle types, such as HFONT and HMENU)IntPtr, UintPtr or HandleRef
HRESULTInt32 or UInt32
INTInt32
LANGIDInt16 or UInt16
LCIDInt32 or UInt32
LONGInt32
LPARAMIntPtr, UintPtr or Object
LPCSTRString
LPCTSTRString
LPCWSTRString
LPSTRString or StringBuilder*
LPTSTRString or StringBuilder
LPWSTRString or StringBuilder
LPVOIDIntPtr, UintPtr or Object
LRESULTIntPtr
SAFEARRAY.NET array type
SHORTInt16
TCHARChar
UCHARSByte
UINTInt32 or UInt32
ULONGInt32 or UInt32
VARIANTObject
VARIANT_BOOLBoolean
WCHARChar
WORDInt16 or UInt16
WPARAMIntPtr, 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*, LPWSTRString [in], StringBuilder [in, out]
DWORD, unsigned long, UlongUInt32, [MarshalAs(UnmanagedType.U4)]
boolbool
LP[In] ref
SIZE_Tuint
LPDWORDout uint
LPTSTR[Out] StringBuilder
PULARGE_INTEGERout ulong
WORDuInt16
Byte, unsigned charbyte
ShortInt16
Long, intInt32
floatsingle
doubledouble
NULL pointerIntPtr.Zero
UintUint32

C#调用DLL文件时参数对应表

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 位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值