0

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 アプリケーションを提供してくれた会社は、なぜこのような失敗が起こるのかをまだ理解していません。

ポインタ/ヒント/アドバイスを歓迎します!

ありがとう!

4

1 に答える 1

0

EV4/WinCE5 でコンパイルされ、何らかの .NET コードによって呼び出される DLL と、VS2008/WinCE6 用にコンパイルされた同じ DLL の間で、ある時点で呼び出し規約が変更されたようです。これで、私の DLL はオブジェクトではなくワイド文字へのポインターを受け取ります...公式ドキュメントから「実際の」説明を取得したかったのですが、条件付きコンパイルで問題が解決しました。とにかく、これで問題は解決しました。

于 2010-03-08T10:47:17.280 に答える