.Net中的SEHException

时间:2016-06-29 11:44:25

标签: c# .net c++-cli

设定:

  • .Net-DLL用C#编写
  • C ++ / CLI Wrapper-Dll调用.Net-DLL
  • VS2013,Windows7 32Bit,.Net 4.5.2

将大于2 ^ 31-1的值分配给.Net-DLL中的double会导致SEHException,一切都可以正常使用较小的值。

public void Foo()
{
    double foo = 2147483648d;
        ...
}
从C ++ / CLI调用时,

会抛出SEHexception,而

public void Foo()
{
    double foo = 2147483647d;
        ...
}

没有。任何想法为什么会发生这种情况以及如何避免异常?

1 个答案:

答案 0 :(得分:1)

从改变FPU控制世界的应用程序调用DLL。设置

_control87(_CW_DEFAULT, MCW_EM);
在调用托管DLL之前,在C ++ / CLI Wrapper-DLL中的

是一个快速修复。