C#调用C++的DLL 所有数据类型转换方式
iteye_4515 2012-08-07 10:43:00 71 已收藏 1
本以为这篇搜集整理的代码会是很不错的文章,花了一天时间,搜索到最后居然出来一篇叫做"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++:un