因为业务需要,需要将一个 c++写的 dll库由 C# 来调用,于是乎google了很多相关的文章,照着写了个 C#程序,结果发现很多时候很简单调用,结果都错了,经过很多次的失败和郁闷,最后发现有个关键点,就是我们c++ 和 c#的数据类型要一一对照起来才可以,如下是从msdn上摘抄一段对照列表,很有用的
Unmanaged type in Wtypes.h | Unmanaged C language type | Managed class name | Description |
---|---|---|---|
HANDLE | void* | 32 bits on 32-bit Windows operating systems, 64 bits on 64-bit Windows operating systems. | |
BYTE | unsigned char | 8 bits | |
SHORT | short | 16 bits | |
WORD | unsigned short | 16 bits | |
INT | int | 32 bits | |
UINT | unsigned int | 32 bits | |
LONG | long | 32 bits | |
BOOL | long | 32 bits | |
DWORD | unsigned long | 32 bits | |
ULONG | unsigned long | 32 bits | |
CHAR | char | Decorate with ANSI. | |
WCHAR | wchar_t | Decorate with Unicode. | |
LPSTR | char* | Decorate with ANSI. | |
LPCSTR | Const char* | Decorate with ANSI. | |
LPWSTR | wchar_t* | Decorate with Unicode. | |
LPCWSTR | Const wchar_t* | Decorate with Unicode. | |
FLOAT | Float | 32 bits | |
DOUBLE | Double | 64 bits |
For corresponding types in Visual Basic 2005, C#, and C++, see the Introduction to the .NET Framework Class Library .