C#调用 非托管C++ dll 传入Stringbuilder、ref string 、 ref char 等都报错,如mscorlib.dll 异常、其他信息: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏 等等,后来发现是dll 生成后一直没更新,放错位置了。。。 = =||
不过也学习了一下编译器及类型相关的知识,整理如下:
1、 cl.exe /Gz 参数指定编译为 __stdcall 调用方式,默认为 __cdecl
2、C#中的char是两个字节
http://msdn.microsoft.com/zh-cn/library/x9h8tsay(v=vs.80).aspx
类型 | 范围 | 大小 | .NET Framework 类型 |
---|---|---|---|
char |
U+0000 到 U+ffff |
16 位 Unicode 字符 |
类型 |
范围 |
大小 |
---|