特定のネイティブ VB6 生成 DLL/OCX が依存するタイプ ライブラリ (GUID とバージョン) をプログラムで特定するにはどうすればよいでしょうか?
背景: 参照されているタイプ ライブラリの 1 つがその依存関係の 1 つを読み込めないプロジェクトを開くと、VB6 IDE がチョークしますが、どの依存関係が満たされないか、またはどの参照に満たすことができない依存関係。これは私の会社ではよくあることなので、VB6 IDE の貧弱なトラブルシューティング情報を補足しようとしています。
関連する詳細/試行:
- 私はVBのソースコードを持っています。これにより、レポの特定のリビジョンの GUID とバージョンがわかりますが、DLL/OCX/TLB ファイルを分析するとき、レポのバージョンがわかりません (もしあれば、ブランチからのものである可能性があるか、まったくない可能性があります)。特定の DLL/OCX が対応します。
- を使用してみまし
tlbinf32.dll
たが、インポートを一覧表示できないようです。 - PE についてはよくわかりませんが、PE ビューアーで DLL の 1 つを開いたところ
MSVBVM60.dll
、インポート セクションにしか表示されませんでした。これは、VB6 で生成されたタイプ ライブラリの特殊な癖のようです。それらはリンクのみをMSVBVM60
行いますが、残りの依存関係に対して何らかの遅延ロード メカニズムを備えています。 - 私が試した既存のツールのほとんどでさえ、情報を提供しません。たとえば、depends.exe は
MSVBVM60.dll
. - ただし、Visual Studio に同梱されていたユーティリティである OLEView は、
importlib
ディレクティブを含む IDL ファイルを生成します。VB が IDL ファイルを使用しないことを考えると、何らかの方法で情報を生成していることは明らかです。それは可能です - 私には方法がわかりません。
本当に、もし OLEView がそれをしなかったなら、私は今では不可能だと諦めていたでしょう。これを達成する方法について何か考えはありますか?