C#调用C++的DLL 所有数据类型转换方式 zz

本文汇总了C#调用C++DLL时所有数据类型的转换方法,包括作者搜集整理的代码和参考资料,虽然发现已有类似文章,但仍期望能为读者提供帮助。文中部分内容未经测试,但大部分代码可以直接应用。
摘要由CSDN通过智能技术生成

C#调用C++的DLL 所有数据类型转换方式

iteye_4515 2012-08-07 10:43:00  71  已收藏 1

文章标签: c# c/c++

本以为这篇搜集整理的代码会是很不错的文章,花了一天时间,搜索到最后居然出来一篇叫做"C# 与 C++ 数据类型对照表"的文章.几乎囊括掉和大部分的数据了,太打击我了. 本文中有部分的数据没有测试.也有一些不错的是看了上百篇网文对比整理得来的.希望有帮助.

 

 
  1. /C++中的DLL函数原型为

  2. //extern "C" __declspec(dllexport) bool 方法名一(const char* 变量名1, unsigned char* 变量名2)

  3. //extern "C" __declspec(dllexport) bool 方法名二(const unsigned char* 变量名1, char* 变量名2)

  4.  
  5. //C#调用C++的DLL搜集整理的所有数据类型转换方式,可能会有重复或者多种方案,自己多测试

  6. //c++:HANDLE(void *) ---- c#:System.IntPtr

  7. //c++:Byte(unsigned char) ---- c#:System.Byte

  8. //c++:SHORT(short) ---- c#:System.Int16

  9. //c++:WORD(unsigned short) ---- c#:System.UInt16

  10. //c++:INT(int) ---- c#:System.Int16

  11. //c++:INT(int) ---- c#:System.Int32

  12. //c++:UINT(unsigned int) ---- c#:System.UInt16

  13. //c++:UINT(unsigned int) ---- c#:System.UInt32

  14. //c++:LONG(long) ---- c#:System.Int32

  15. //c++:ULONG(unsigned long) ---- c#:System.UInt32

  16. //c++:DWORD(unsigned long) ---- c#:System.UInt32

  17. //c++:DECIMAL ---- c#:System.Decimal

  18. //c++:BOOL(long) ---- c#:System.Boolean

  19. //c++:CHAR(char) ---- c#:System.Char

  20. //c++:LPSTR(char *) ---- c#:System.String

  21. //c++:LPWSTR(wchar_t *) ---- c#:System.String

  22. //c++:LPCSTR(const char *) ---- c#:System.String

  23. //c++:LPCWSTR(const wchar_t *) ---- c#:System.String

  24. //c++:PCAHR(char *) ---- c#:System.String

  25. //c++:BSTR ---- c#:System.String

  26. //c++:FLOAT(float) ---- c#:System.Single

  27. //c++:DOUBLE(double) ---- c#:System.Double

  28. //c++:VARIANT ---- c#:System.Object

  29. //c++:PBYTE(byte *) ---- c#:System.Byte[]

  30.  
  31. //c++:BSTR ---- c#:StringBuilder

  32. //c++:LPCTSTR ---- c#:StringBuilder

  33. //c++:LPCTSTR ---- c#:string

  34. //c++:LPTSTR ---- c#:[MarshalAs(UnmanagedType.LPTStr)] string

  35. //c++:LPTSTR 输出变量名 ---- c#:StringBuilder 输出变量名

  36. //c++:LPCWSTR ---- c#:IntPtr

  37. //c++:BOOL ---- c#:bool

  38. //c++:HMODULE ---- c#:IntPtr

  39. //c++:HINSTANCE ---- c#:IntPtr

  40. //c++:结构体 ---- c#:public struct 结构体{};

  41. //c++:结构体 **变量名 ---- c#:out 变量名 //C#中提前申明一个结构体实例化后的变量名

  42. //c++:结构体 &变量名 ---- c#:ref 结构体 变量名

  43.  
  44.  
  45. //c++:WORD ---- c#:ushort

  46. //c++:DWORD ---- c#:uint

  47. //c++:DWORD ---- c#:int

  48.  
  49. //c++:UCHAR ---- c#:int

  50. //c++:UCHAR ---- c#:byte

  51. //c++:UCHAR* ---- c#:string

  52. //c++:UCHAR* ---- c#:IntPtr

  53.  
  54. //c++:GUID ---- c#:Guid

  55. //c++:Handle ---- c#:IntPtr

  56. //c++:HWND ---- c#:IntPtr

  57. //c++:DWORD ---- c#:int

  58. //c++:COLORREF ---- c#:uint

  59.  
  60.  
  61. //c++:unsigned char ---- c#:byte

  62. //c++:unsigned char * ---- c#:ref byte

  63. //c++:unsigned char * ---- c#:[MarshalAs(UnmanagedType.LPArray)] byte[]

  64. //c++:un

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值