1. C#类型与C/C++类型的对应关系
基本数据类型(C# <—> C/C++)
- System.Int32,int <—> int, long
- System.Int64,int64 <—> long long, __int64
- System.Char, char <—> char, byte, unsigned char
- System.Int16, short <—> short
- System.UInt32, uint <—> unsigned int, unsigned long
- System.UInt16, ushort <—> unsigned short, DWORD
- System.String, string <—> char[], char *, const char *
- System.IntPtr <—> void *, [Type]*
- Sytem.Boolean, bool <—> bool, BOOL
2. C/C++函数参数类型与C#类型对应关系
① 基本的数据类型对应关系与1相同,但是也有一些不一样的地方
② const char * 一般作为输入参数, C#直接使用string类型即可(StringBuilder也可以)
③ char *作为输入参数的时候, C#需要使用ref string类型或者StringBuilder类型
④ 结构体指针做输入参数的时候, C#一般使用ref + 对应的结构体类型
3. C/C++结构体与C#结构体的成员类型对应关系
A. 如果C/C++结构体成员类型是基本数据类型, C#中对应的结构体成员类型使用1中的对应关系即可, 如:
C/C++代码
struct Some
{
int number;
char character;
char name[32];
}
C#代码
struct Some
{
int number;
char charactor;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=32)]
string name