0

私は、C# で .NET 3.5 アプリケーションを使用しており、レガシー C++ コードを定期的に呼び出しています。ドロップダウン リストを持つ Infragistics UltraGrid にマウスを合わせると、C++ を呼び出すと「オーバーフローまたはアンダーフロー算術演算」が発生することがあることに気付きました。これは、C++ コードが次のことを行う場合にのみ発生することがわかりました。

Word SavedWord = Default8087CW;
Set8087CW(0x133f); // Disable all fpu exceptions

...

Set8087CW(SavedWord);

最後の行をコメントアウトすると、.NET アプリケーションでエラーが発生しなくなりました。アプリケーションの残りの部分で、他の副作用に気づいていません。簡単な修正として、この行をコメントアウトしたままにします。FPU 例外を無効にし、コントロール ワードをリセットしないと、どのような影響がありますか?

4

2 に答える 2

2

解決策はここにあります:「C++ライブラリからメソッドを呼び出すときにWPFでStackOverFlowException」。

これについて Hans Passant に感謝します。

于 2012-06-04T13:07:11.073 に答える
0

他のマシンでテストした後、Set8087CW(SavedWord); をコメントアウトしているようです。行は私のマシンの問題のみを修正します。私のバージョンの Infragistics (8.2.20082.2204) にバグがあるようです。8.2.20082.1000 にロールバックすると、問題が修正されました。

于 2012-05-30T15:44:01.587 に答える