设定:
将大于2 ^ 31-1的值分配给.Net-DLL中的double会导致SEHException,一切都可以正常使用较小的值。
public void Foo()
{
double foo = 2147483648d;
...
}
从C ++ / CLI调用时,会抛出SEHexception,而
public void Foo()
{
double foo = 2147483647d;
...
}
没有。任何想法为什么会发生这种情况以及如何避免异常?
答案 0 :(得分:1)
从改变FPU控制世界的应用程序调用DLL。设置
_control87(_CW_DEFAULT, MCW_EM);
在调用托管DLL之前,在C ++ / CLI Wrapper-DLL中的是一个快速修复。