在.Net 4中:PInvokeStackImbalance例外

SDR*_*yes 3 .net c# msvcrt .net-4.0

我正在使用.Net 3.5项目中的strlen函数msvcrt.dll.进一步来说:

private unsafe static extern int strlen( byte *pByte );

迁移到.NET 4.0后,如果我使用此函数,则会抛出PInvokeStackImbalance异常.

如何导入.NET 3.5 msvcrt.dll或修复此异常?

Chr*_*lor 11

我怀疑问题在于调用约定,你应该使用Cdecl.

[DllImport("msvcrt.dll", CallingConvention=CallingConvention.Cdecl)]
private unsafe static extern int strlen(byte* pByte);
Run Code Online (Sandbox Code Playgroud)