调用VC封装的DLL时,两个类型匹配问题

 

1、  VC中的long类型,在C#中重新声明时,映射为int型。

这是历史遗留问题,在PC还是16位时,VC中的long类型标识32位整型,当PC升级到32位后,long还是表示32位,而现如今C#中的long标识64位,所以需要注意这一点。

 

2、  VC中的char*类型,在C#中重新声明时,映射为byte[]类型。

我看到char*的第一反应是,将其对应到C#string类型,结果程序运行后,也能执行,但不是想看到的结果。后来上网查了一下,莫衷一是,stirngref stringstringBuilderbyte[] 都有说了。查了一下 MSDNVCchar是单字节,而C#char是双字节的,所以将char*映射成string就不对头,应该应对映射成byte[],然后调整了一下自己的程序,验证了这个判断是正确的。

你可能感兴趣的:(dll)