C で記述された DLL を WinCE 5.0 から ARM ターゲットの WinCE 6.0 に移植しています。この DLL は .NET ソフトウェアによって呼び出されます。WinCE5.0 では、すべて正常に動作します。WinCE6 では、次の問題があります。
私の DLL の InitInstance() では、問題なく何でも呼び出すことができます (たとえば、MessageBox())。または再帰性を使用します。
その時点を過ぎると、DLL は .NET コードによって呼び出されます。そして、それは失敗します: .NET コードによって渡される引数でさえ奇妙に思えます。MessageBox() を 1 回呼び出すことはできますが、MessageBox() を呼び出してから自分自身を呼び出す関数を呼び出すことはできません。再帰性が壊れています。
.NET コードは、私の C コードとは異なる方法でスタックを使用しているようです。
私は Windows の世界に非常に慣れておらず、.NET アプリケーションを提供してくれた会社は、なぜこのような失敗が起こるのかをまだ理解していません。
ポインタ/ヒント/アドバイスを歓迎します!
ありがとう!