SEHE.Net中的异常
本文关键字:异常 Net SEHE | 更新日期: 2023-09-27 17:53:12
设置:
- 用C编写的.Net DLL#
- C++/CLI Wrapper Dll调用.Net Dll
- VS2013,Windows7 32位,.Net 4.5.2
将大于2^31-1的值分配给.Net DLL中的双精度将导致SEHException,使用较小的值一切正常。
public void Foo()
{
double foo = 2147483648d;
...
}
当从C++/CLI调用时,确实抛出SEHexception,而
public void Foo()
{
double foo = 2147483647d;
...
}
没有。你知道为什么会发生这种情况以及如何避免这种例外吗?
DLL是从一个改变FPU控制世界的应用程序中调用的。设置
_control87(_CW_DEFAULT, MCW_EM);
在调用托管DLL之前,在C++/CLI Wrapper DLL中执行此操作是一个快速修复方法。