2009-08-20 3 views
1

私は現在、カスタムのネイティブdllを呼び出すいくつかのC#コードに取り組んでいます。データをC#にマーシャリングするときは、マーシャリングに使用するクラス/構造体のフィールドを明示的に揃える必要があります。私はマーシャラとそのルールの不完全な理解から生じるこの問題にはいくつかの問題がありました。たとえば、私は最近、マーシャラが配列をDWORDに整列させる必要があることをSOの質問を通じて知っていました。私がこれを以前に知っていれば、頭がおかしくなってしまったでしょう。.NETマーシャラー:良いドキュメントですか?

私の質問は二つある:

1)この種の情報を提供しマーシャラーための任意の良いドキュメントはありますか?

2)他にも同様の制限事項がありますか? (たとえば、すべてのDWORDサイズのフィールドをDWORDに合わせる必要がありますか?)

答えて

1

http://pinvoke.netには、多くの(多くの)株式win32関数の多くの(多くの)正確なマーシャリング命令など、多くの優れた情報があります。これはwikiベースなので、既存のライブラリーやグリッチを追加することができます。

+0

これは役に立つサイトですが、私はカスタム.dllからデータをマーシャリングしています。だから、マーシャリングのすべての構造体/クラスを自分で定義する必要があります。私はマーシャラとそのルールを理解していないことに起因する厄介な問題を抱えていましたので、私はそのテーマに関する良い文書を探していたいと思っていました。 – Odrade

2

特定のライブラリのピンボケ署名を生成するのに便利なツールがあります。 win32 apiのショートカットがありますが、あなた自身のファイルを渡すことができます。

pinvoke interop assistant

私はそれがマッピングの理解に役立ちますどのくらいか分からないが、少なくともそれはあなたの作業例を与える可能性があります。私はいくつかのネイティブコードへのC#インタフェースを生成するためにそれを使用しました。

codeplex siteにも有用な診断ツールがあるようですが、私はあきらめます。

関連する問題