C# で使用したい IDL ファイルで定義されたインターフェイスがあります。IDL を C# で使用できるものに変換する方法はありますか?
3 に答える
IDL ではどのようなデータ型/構造が使用されていますか? inbuild 型がまだない場合は、最初に C# でデータ型を定義する必要があります。
次のツールを使用して構造を変換できますが、出力を手動で確認する必要があります。
このユーティリティについては、Accessing Windows API Constants and Structs for P/Invokeで説明されています。
元の 2008 年 1 月の記事は、 https://msdn.microsoft.com/magazine/msdn-magazine-issuesの下部にリンクされている.CHM ヘルプ ファイルのダウンロードとしてのみ利用できるようになりました。とりあえず、ソース コードはhttp://clrinterop.codeplex.com/にあります。
たとえば、私は最近 XPS Print API を使用しており、xpsobjectmodel.h インターフェイスが必要でした。幸いなことに、Windows SDK には xpsobjectmodel.idl が付属しています。
最初に MIDL を使用して TLB ファイルを生成し、TLBIMP を使用して適切な DLL アセンブリを生成し、C# プロジェクトの「参照...」セクションに追加できるようにしました。
プロジェクト フレームワークに適したバージョンのツールを使用してください。たとえば、プロジェクト フレームワークが 3.5 ベースの場合、4.0 ツールセットの tlbimp を使用しても機能しません。