私の同僚から、Visual Studioでは.dll
C#ラッパークラスをポイントして自動的に生成できると言われました。これは本当に可能ですか?もしそうなら、これを達成するにはどうすればよいでしょうか?私はウェブを閲覧しましたが、何も思いつきませんでした!
皆さんありがとう!
私もこれらのリソースを共有すると考えました、
- 方法:COMラッパーを作成する
- そして@Darinの好意により、アンマネージDLL関数を消費します
私の同僚から、Visual Studioでは.dll
C#ラッパークラスをポイントして自動的に生成できると言われました。これは本当に可能ですか?もしそうなら、これを達成するにはどうすればよいでしょうか?私はウェブを閲覧しましたが、何も思いつきませんでした!
皆さんありがとう!
私もこれらのリソースを共有すると考えました、
3 ケース:
これは、どの DLL でも不可能です。非常に特殊な種類で、COM サーバーを実装するものです。コンバーターは、タイプ ライブラリによってそのようなサーバーに提供される、エクスポートされた型の適切な説明を必要とします。
タイプ ライブラリは、マネージ アセンブリのメタデータとまったく同じです。最初はスタンドアロン ファイル (.tlb ファイル) として機能しますが、多くの場合、DLL にリソースとして埋め込まれます。適切な場所は、型の説明をそれを実装するコードに近づけることです。.NET アセンブリのメタデータと同様です。
タイプ ライブラリを確認するためのいくつかのツール (Express で機能するかどうかは不明): Visual Studio では、File + Open + File を使用して、たとえば c:\windows\system32\shell32.dll を選択します。その DLL にリソースが表示されます。TYPELIB ノードに注意してください。それがタイプライブラリです。バイナリであるため、実際に読み取ることは実用的ではありません。そのためには、Visual Studio コマンド プロンプトから OleView.exe を実行します。File + View Typelib を開き、同じ DLL を選択します。これにより、タイプ ライブラリが IDL (タイプ ライブラリの作成に最初に使用されたインターフェイス記述言語) に逆コンパイルされます。非常に読みやすく、言語を理解するのにほとんど問題はありません。また、.NET Tlbimp.exe がそのタイプ ライブラリを同等の C# 宣言に変換する方法を簡単に確認できます。
タイプ ライブラリは古く、1996 年から存在しています。もともとは、16 ビット VB 拡張モデルである VBX の代替として、Microsoft の Visual Basic チームによって設計されました。それらは非常に成功しており、実質的にすべての Windows コンパイラがサポートしています。しかし、それらは表現力が制限されており、ジェネリックや実装の継承などはサポートされていません。注目すべきは、Windows 8 チームが WinRT のタイプ ライブラリを置き換えたことです。彼らは .NET メタデータ形式を選びました。