我正在使用C#中的.NET 3.5應用程序,它定期調用一些傳統的C++代碼。我注意到,當將鼠標懸停在具有下拉列表的Infragistics UltraGrid上時,調用C++有時會導致「溢出或下溢算術操作」。我發現,在C++代碼執行以下操作時,這只是發生:在C++中重置8087CW導致.NET應用程序出現異常
Word SavedWord = Default8087CW;
Set8087CW(0x133f); // Disable all fpu exceptions
...
Set8087CW(SavedWord);
如果我註釋掉最後一行,我不再是我的.NET應用程序出現錯誤。我沒有注意到其他應用程序中的其他副作用。作爲一個快速解決方案,我想將此行註釋掉。禁用FPU異常並且不重置控制字的後果是什麼?
Default8087CW的值是否爲進入C++函數時的實際值?還是C++ RTL認爲是默認值?這兩者可能有所不同。 –
@ 500-InternalServerError,我將如何檢查?我所能確認的是,退出C++代碼後的Default8087CW的值與輸入時相同。 – Everett
我不熟悉如何在C++中執行此操作。沒有相應的Get8087CW()函數嗎? –