0

実際の作業のために C++ dll の関数を呼び出す C# プログラムがあります。これらの関数には出力パラメーターがあり、問題が発生した場合に例外がスローされる場合があります。相互運用バリアを越えて例外をスローすると、うまくいくようです。私たちが遭遇する問題は、明らかに、例外が発生した場合でも、マーシャラーが関数から出力パラメーターを取得しようとすることです。場合によっては、(例外が原因で) 適切な値が設定されず、mscorlib.dll でアクセス違反が発生してプロセスがクラッシュすることがあります。

もちろん、作業が完了する前にすべての出力パラメータを有効な値 (null など) に初期化することも可能です。ただし、これらの 1 つを忘れた場合の罰則は厳しいものです。

例外がスローされたときにマーシャラーも実行されるという私たちの分析は正しいですか? これを防ぐ方法はありますか?

ティア。

4

0 に答える 0