5

1998 年に作成された C++ DLL があり、メンバー (プロパティ、フィールド、メソッド、コンストラクターなど) を表示したいと考えています。DLL を作成した会社はもう存在しないことは理解していますが、まだ使用されています。

DLL しかない場合、これは可能ですか? それとも、DLL を操作するために DLL の内容を知っている必要がありますか。可能であれば、これについてどうすればよいですか?

P/Invoke を介して .Net から DLL を操作したいと考えています。

4

4 に答える 4

5

これを入手: http://www.dependencywalker.com/を使用depends.exeして DLL を開き、[表示] メニューの [C++ 関数の装飾を解除] を有効にします。主に依存関係を見つけるために使用しますが、DLL のエントリ ポイントも公開します。

クラスを公開する DLL はそのメソッドをエクスポートする必要がないため、これは絶対確実ではありません。たとえば、純粋仮想メソッドのレイアウトは十分に均一であるため、ファクトリ関数を使用してインスタンスをインターフェイス ポインターとして公開できます。しかし、それはあなたの問題を解決するかもしれません。

とにかく、Dependency Walker のコピーが必要です。:)

于 2012-12-11T14:53:48.080 に答える