C/C++与C#之间类型的对应

最近在研究pos打印机相关功能, 调用winapi以及跨进程通信等,都涉及到类型之间的转换。


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


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


Wtypes.h 中的非托管类型


非托管 C 语言类型


托管类名


说明


HANDLE


void*


System.IntPtr


在 32 位 Windows 操作系统上为 32 位,在 64 位 Windows 操作系统上为 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 位

时间: 2024-10-06 10:51:21

C/C++与C#之间类型的对应的相关文章

JS 数据之间类型的转化

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <body> 8 </body> 9 10 <script type="text/javascript"> 11 12 // Number 其他类型转化为 number

C#与C++之间类型对应关系

//C++中的DLL函数原型为  //extern "C" __declspec(dllexport) bool 方法名一(const char* 变量名1, unsigned char* 变量名2)  //extern "C" __declspec(dllexport) bool 方法名二(const unsigned char* 变量名1, char* 变量名2) //C#调用C++的DLL搜集整理的所有数据类型转换方式,可能会有重复或者多种方案,自己多测试  

【opencv基础】opencv和dlib库中rectangle类型之间的转换

前言 最近使用dlib库的同时也会用到opencv,特别是由于对dlib库的画图函数不熟悉,都想着转换到opencv进行show.本文介绍一下两种开源库中rectangle类型之间的转换. 类型说明 opencv中cv::Rect    以及opencv中的rectangle函数: void cv::rectangle( InputOutputArray img, Point pt1, Point pt2, const Scalar & color, int thickness = 1, int

mysql之show engine innodb status解读(转)

add by zhj: 我第一次知道这个命令是线上服务出了问题,然后同事用这个命令去查看死锁.但用这个命令看死锁有一定的局限性,它只能看到最后一次死锁, 而且只能看到死锁环中的两个事务所执行的最后一条语句(即被死锁卡住的那条语句),看不到整个死锁环,也看到不整个事务的语句.但是即使这亲,对我 们来说也非常有用,因为一般来说,数据库同时存在多个死锁环的可能性比较小,而且有了死锁环中的事务的最后一条语句,我们找到整个死锁环不是太难. "show engine innodb status"这

C++ 模板与泛型编程

<C++ Primer 4th>读书笔记 所谓泛型编程就是以独立于任何特定类型的方式编写代码.泛型编程与面向对象编程一样,都依赖于某种形式的多态性. 面向对象编程中的多态性在运行时应用于存在继承关系的类.我们能够编写使用这些类的代码,忽略基类与派生类之间类型上的差异. 在泛型编程中,我们所编写的类和函数能够多态地用于跨越编译时不相关的类型.一个类或一个函数可以用来操纵多种类型的对象. 面向对象编程所依赖的多态性称为运行时多态性,泛型编程所依赖的多态性称为编译时多态性或参数式多态性. 模板是泛型

【IOS】读取、保存图片的各种方法

一.读取图片 1.从资源(resource)读取 1 UIImage* image=[UIImage imageNamed:@"1.jpg"]; 2.从网络读取[最好使用EGOImageView来获取网络图片] 1 NSURL *url=[NSURL URLWithString:@"http://www.sinaimg.cn/qc/photo_auto/chezhan/2012/50/00/15/80046_950.jpg"]; 2 UIImage *imgFrom

mysql之show engine innodb status解读

注:以下内容为根据<高性能mysql第三版>和<mysql技术内幕innodb存储引擎>的innodb status部分的个人理解,如果有错误,还望指正!! innodb存储引擎在show engine innodb status(老版本对应的是show innodb status)输出中,显示除了大量的内部信息,它输出就是一个单独的字符串,没有行和列,内容分为很多小段,每一段对应innodb存储引擎不同部分的信息,其中有一些信息对于innodb开发者来说非常有用,但是,许多信息,

转:Oculus Unity Development Guide开发指南(2015-7-21更新)

http://forum.exceedu.com/forum/forum.php?mod=viewthread&tid=34175 Oculus Unity Development Guide开发指南转载请保留原始地   http://t.cn/RAblKoh Oculus/GearVR开发者群 302294234 Welcometo the Unity Development GuideIntroduction简介Welcometo the Oculus Unity Developer Gui

C++之鸡零狗碎

======================================================================== ♦集中关注概念,不要迷失在语言细节中:支持一种逐步推进的学习方式. ♦一个定义良好的用户类与内部类的差别仅仅在于其定义方式. ♦C++设计目的就是:是较大程序能够以合理的方式构造出来: C++特征诸如:能够以一种直截了当的方式去和硬件打交道而不顾及安全性等:将代码隐藏在优美的界面之后. ♦程序设计语言有两点:描述执行的动作载体(低级语言,效率高) --