2009-08-20 16 views
20

に変換します。私はC#で使用したいIDLファイルで定義されたインターフェイスを持っています。 IDLをC#で使えるものに変換する方法はありますか?インターフェイスIDLファイルをC#

+0

「何か」とは何ですか? – Achim

+0

C#で使えるもの。コンパイルするもの。 –

答えて

27

IDLでMIDLを実行してタイプライブラリ(.tlb)を作成する方法もあります。これにはIDLのブロックlibraryが必要です。 .tlbを取得したら、tlbimp.exeを実行してC#定義/ Interop DLLを取得できます。

+0

であり、[JetBrains dotPeek](https://www.jetbrains.com/decompiler/)を使用して、生成されたinterop DLLからC#定義を表示することができます。 –

4

IDLではどのようなデータ型/構造体が使用されていますか?既にinbuild型がない場合は、最初にC#でデータ型を定義する必要があります。

次のツールを使用して構造体を変換できますが、手動で出力を確認する必要があります。

ダウンロード:http://download.microsoft.com/download/f/2/7/f279e71e-efb0-4155-873d-5554a0608523/CLRInsideOut2008_01.exe

このユーティリティはAccessing Windows API Constants and Structs for P/Invokeで記述されています。

2008年1月の記事は、https://msdn.microsoft.com/magazine/msdn-magazine-issuesの下にリンクされている.CHM help file downloadとしてのみ入手可能です。当分の間、ソースコードはhttp://clrinterop.codeplex.com/にあります。

+0

ドキュメントはどこですか> ?? –

+1

@ChandraEskay MSDN記事へのリンクが正しくなくなったので、私はこのユーティリティに関する情報を更新する自由を取った。 –

1

たとえば、私は最近XPS Print APIを使用し、xpsobjectmodel.hインターフェイスが必要でした。 Windows SDKには幸いにもxpsobjectmodel.idlが付属しています。

TLBファイルをMIDLで最初に生成し、TLBIMPを使用して、適切なDLLアセンブリを生成し、C#プロジェクトの[参照...]セクションに追加しました。

プロジェクトフレームワークに適切なバージョンのツールを使用してください。たとえば、プロジェクトフレームワークが3.5ベースの場合、4.0ツールセットのtlbimpを使用すると機能しません。

関連する問題