因为业务需要,需要将一个 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 .