最近在做一些跨语言的开发,需要C#调用VC++开发的动态链接库,以前对VC++没有太多深入研究,导致这次开发过程遇到了阻碍,下面是从中得到的一些经验。
1、Byte vs Char
在C#中Byte就8 bit,Char是16bit(2 Byte)。
而在VC++中是没有Byte的数据类型,char = signed Char = unsigned char = __int8 长度都是1 Byte。而VC++里面的wchar_t(2 Byte)就可以正确对应C#里面Char。
2、long
在C#中long是8 Byte。
而在VC++中long = unsigned long 是4 Byte,而long long = signed long long = unsigned long long = __int64 长度才是8 Byte。
以上两点是做.NET开发人员最容易混淆的VC++类型,如果C#调用VC++一个long的参数,你用C#的long类型去声明,几乎就会乱套。