1998 年に作成された C++ DLL があり、メンバー (プロパティ、フィールド、メソッド、コンストラクターなど) を表示したいと考えています。DLL を作成した会社はもう存在しないことは理解していますが、まだ使用されています。
DLL しかない場合、これは可能ですか? それとも、DLL を操作するために DLL の内容を知っている必要がありますか。可能であれば、これについてどうすればよいですか?
P/Invoke を介して .Net から DLL を操作したいと考えています。
1998 年に作成された C++ DLL があり、メンバー (プロパティ、フィールド、メソッド、コンストラクターなど) を表示したいと考えています。DLL を作成した会社はもう存在しないことは理解していますが、まだ使用されています。
DLL しかない場合、これは可能ですか? それとも、DLL を操作するために DLL の内容を知っている必要がありますか。可能であれば、これについてどうすればよいですか?
P/Invoke を介して .Net から DLL を操作したいと考えています。
これを入手: http://www.dependencywalker.com/を使用depends.exe
して DLL を開き、[表示] メニューの [C++ 関数の装飾を解除] を有効にします。主に依存関係を見つけるために使用しますが、DLL のエントリ ポイントも公開します。
クラスを公開する DLL はそのメソッドをエクスポートする必要がないため、これは絶対確実ではありません。たとえば、純粋仮想メソッドのレイアウトは十分に均一であるため、ファクトリ関数を使用してインスタンスをインターフェイス ポインターとして公開できます。しかし、それはあなたの問題を解決するかもしれません。
とにかく、Dependency Walker のコピーが必要です。:)