P/Invoke各种总结(三、平台调用时的数据类型对应)

C#和C++在互操作时,会涉及到数据类型对应的问题,这里做一下总结。

因为我只用C#语言,所以表格中的第三列写的是C#,其它.Net平台下的语言也是适用的。

说明:

1. 表格第三列括号中显示的是别名(关键字)。

2.关于使用string还是StringBuilder,可以参考https://www.cnblogs.com/zhaotianff/p/12524947.html

VC++ Ansi C C#(CTS) 说明
VOID void System.Void(void) void类型,代表函数无返回值。在C++里函数无参数也可以传入void,在C#里不这么做。
HANDLE void * System.IntPtr or System.UIntPtr 长度:32位(32位系统), 64位(64位系统)
BYTE unsigned char System.Byte(byte) 长度:8位
SHORT short System.Int16(short) 长度:16位
WORD unsigned short System.UInt16(ushort) 长度:16 位
INT int System.Int32(int) 长度:32 位
UINT unsigned int System.UInt32(uint) 长度:32 位
LONG long System.Int32(int) 长度:32 位
BOOL long System.Boolean(bool) or System.Int32(int) 长度:32 位
DWORD unsigned long System.UInt32(uint) 长度:32 位
ULONG unsigned long System.UInt32(uint) 长度:32 位
CHAR char System.Char(char) 字符集:ANSI(多字节)
WCHAR wchar_t System.Char(char) 字符集:Unicode(宽字符)
LPSTR char * System.String(string) or System.Text.StringBuilder 字符集:ANSI(多字节)
LPCSTR const char * System.String(string) or System.Text.StringBuilder 字符集:ANSI(多字节)
LPWSTR wchar_t * System.String(string) or System.Text.StringBuilder 字符集:Unicode(宽字符)
LPCWSTR const wchar_t * System.String(string) or System.Text.StringBuilder 字符集:Unicode(宽字符)
FLOAT float System.Single(float) 长度:32 位
DOUBLE double System.Double(double) 长度:64 位
上一篇:在用eclipse创建完SpringMVC案例后,配置文件都没有错,启动Tomcat就报错!!!


下一篇:PowerUp攻击模块实战演练(未完待续)