0

C# プログラムで pinvoke を使用してアンマネージ関数をラップする必要があります。
C# でのマネージ宣言がネイティブ宣言と一致するかどうかを知る方法はありますか?
一致しない場合、それを呼び出そうとしても execption がスローされないため、関数が実際に呼び出されたかどうかがわからないことに気付きました。
(管理されていない関数はサード パーティのコンポーネントからのものなので、ログを入れたり変更したりすることはできません。)

4

2 に答える 2

2

p/invoke 宣言がネイティブ関数と一致することを自動的に確認する方法はありません。それを正しくする責任はあなたにあります。

多くの場合、間違っていると例外が発生します。しかしいつもではない。

于 2013-10-16T07:25:25.037 に答える
1

ときどき、複雑な関数シグネチャを独自のアンマネージ DLL に複製し、それをテストして、P/Invoke によって引数がどのようにマーシャリングされるかを正確に学習しました。その後、マネージ プロジェクトでアンマネージ デバッグを有効にすると、マネージ コードからアンマネージ コードにデバッグできます。これは、P/Invoke が失敗する理由のトラブルシューティングに役立ちます。

于 2013-10-16T07:48:22.683 に答える