




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
各种语言数据类型对应关系/*=(VC函数)函数名: SN_MakeGuestCard功能描述: 发行客人卡输入参数: RoomNo - 柜号:165535 IssuedTime - 发卡时间: 年月日时分秒, 字符串格式 YYYY-MM-DD hh:mm:ss AllowHours - 允许使用的小时数, 0 1000, 0表示不限时 GuestFlags - 客人卡标志输出参数: Rom - 卡号: 16个字符例 子:RoomNo=1, IssuedTime=2010-01-01 12:30:00, AllowHours=12, GuestFlags=0返回值: 错误类型 =*/int _stdcall SN_MakeGuestCard(char *Rom, unsigned int RoomNo, char *IssuedTime, unsigned int AllowHours, unsigned int GuestFlags);C#调用C+的DLL搜集整理的所有数据类型转换方式时间:2011-03-11 12:35:32来源:网络整理 作者:未知 点击:62次 本以为这篇搜集整理的代码会是很不错的文章,花了一天时间,搜索到最后居然出来一篇叫做"C# 与 C+ 数据类型对照表"的文章.几乎囊括掉和大部分的数据了,太打击我了. 本文中有部分的数据没有测试.也有一些不错的是看了 本以为这篇搜集整理的代码会是很不错的文章,花了一天时间,搜索到最后居然出来一篇叫做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搜集整理的所有数据类型转换方式,可能会有重复或者多种方案,自己多测试 /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+:结构体 - c#:public struct 结构体; /c+:结构体 *变量名 - c#:out 变量名 /C#中提前申明一个结构体实例化后的变量名 /c+:结构体 &变量名 - c#:ref 结构体 变量名 /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+中一个字符用一个字节表示,C#中一个字符用两个字节表示 /c+:char 数组名数组大小 - c#:MarshalAs(UnmanagedType.ByValTStr, SizeConst = 数组大小) public string 数组名; ushort /c+:char * - c#:string /传入参数 /c+:char * - c#:StringBuilder/传出参数 /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 变量名数组大小 - c#:MarshalAs(UnmanagedType.ByValTStr,SizeConst=数组大小) public string 变量名; /c+:struct 结构体名 *变量名 - c#:ref 结构体名 变量名 /c+:委托 变量名 - c#:委托 变量名 /c+:int - c#:int /c+:int - c#:ref int /c+:int & - c#:ref int /c+:int * - c#:ref int /C#中调用前需定义int 变量名 = 0; /c+:*int - c#:IntPtr /c+:int32 PIPTR * - c#:int32 /c+:float PIPTR * - c#:float /c+:double* 数组名 - c#:ref double 数组名 /c+:double* 数组名 - c#:ref double 数组名 /c+:long - c#:int /c+:ulong - c#:int /c+:UINT8 * - c#:ref byte /C#中调用前需定义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#里重新定义一个Struct /CallBack回调函数需要封装在一个委托里,delegate static extern int FunCallBack(string str); /unsigned char* ppImage替换成IntPtr ppImage /int& nWidth替换成ref int nWidth /int*, int&, 则都可用 ref int 对应 /双针指类型参数,可以用 ref IntPtr /函数指针使用c+: typedef double (*fun_type1)(double); 对应 c#:public delegate double fun_type1(double); /char* 的操作c+: char*; 对应 c#:StringBuilder; /c#中使用指针:在需要使用指针的地方 加 unsafe /unsigned char对应public byte /* * typedef void (*CALLBACKFUN1W)(wchar_t*, void* pArg); * typedef void (*CALLBACKFUN1A)(char*, void* pArg); * bool BIOPRINT_SENSOR_API dllFun1(CALLBACKFUN1 pCallbackFun1, void* pArg); * 调用方式为 * UnmanagedFunctionPointer(CallingConvention.Cdecl) * public delegate void CallbackFunc1(MarshalAs(UnmanagedType.LPWStr) StringBuilder strName, IntPtr pArg); * * */ 本篇文章来源于:开发学院 原文链接:/2011/0311/30006.php这里是VB引用VC写的DLLVCVBChar *chString str; str=Space(10),在写函数参数时也应该写ByVal str as String但如果是结构体,那么在VC中若是char 20,在VB中就要写成bch(21) as ByteIntLongLongLongShortIntegerUNITLongULONGLongWORDDWORDLongWPARAMLPARAMLongWMSGUMSGLongHRESULTLongBOOLBooleanCOLOREFLongHWND,HDC,HBRUSH,HKEYLongLPSTRLPCSTRStringVARIANT_BOOLBooleanUnsigned charByteByteByte Charbyte这里是PB引用VC写的DLL指针在PB里面可以用REF引用或用LONG型变量来代替指針VCPB(16Bit)PB(32Bit)BoolBooleanBooleanByte,CharCharCharChar *Ref stringRef stringColorrefUintUlongDoubleDoubleDoubleDwordUintUlongFloatN/AN/AHandleUintUlongHdcUintUlongHfileUintUlongHinstanceUintUlongHwndUintUlonghWndUintUlongIntIntIntLongLongLongLparamUintUlongLpbyteRef intRef longLpcwstrRef BlobRef BlobLpcvoidRef stringRef stringLpdwordRef UintRef UlongLpfiletimeRef TimeRef TimeLpintRef IntRef LongLpstr,LpcstrRef StringRef StringLpvoidRef Struct struce_instRef Struct struct_instLpwordLongLongMcierrorLongLongPbyteRef Int#Ref Long#ShortIntIntStructureRef Struct strucr_instRef Struct struct_instUintUintUintVoid*SUBROUTINESUBROUTINEWordIntLongWparamUintuint 在PB10.5中的调用方法为:FUNCTION int SN_MakeGuestCard(ref string sRom ,int RoomNo,ref string IssTime ,int AllowsHours,int GuestFlags) LIBRARY SnMakeCard.dll Alias for SN_MakeGuestCard;Ansi在用的时候也要给string类型分配空间sRom=space(17)在PB9.0中,可以这样调用FUNCTION int SN_MakeGuestCard(ref char sRoma20,integer sRoomNo,ref char sIssTime24,integer sAllowsHours,integer sGuestFlags) LIBRARY SnMakeCard.dll alias for SN_MakeGuestCard;Ansi这里是Delphi引用VC写的DLLdelphi和vc基本数据类型对应关系unsigned long - dword unsigned char - byte char - char UINT -
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中劳动课程课件
- 高三网课自律课件
- 公共交通枢纽环境卫生清扫与垃圾收运合同
- 蔬菜大棚租赁与有机农产品销售合作合同
- 水上娱乐项目租赁合同终止及权益补偿协议
- 髋关节灵活度训练课件
- 制作卡通形象发展规划方案
- 医院监控管理规定
- 优惠力度大购物乐趣多
- 园艺营养土选购技巧:助力植物健康成长
- 民航企业管理概论课件
- 解读学习2025年《住房租赁条例》培训课件
- Q-JJJ 9002-2025 铁路建设项目安全穿透式管理实施指南
- 视网膜静脉周围炎诊断
- 睾丸鞘膜积液护理查房
- 小学健康心理课件
- 政法干警执纪监督心得体会
- 安阳职业技术学院《影视置景工艺》2023-2024学年第一学期期末试卷
- DB45∕T 2952-2024 高标准农田耕地质量评价技术规程
- 安全生产合规管理
- 肩袖损伤护理常规
评论
0/150
提交评论