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