如何以编程方式确定给定的原生 VB6 生成的 DLL/OCX 依赖于哪些类型库(GUID 和版本)?
背景:当打开一个项目时,其中一个引用的类型库无法加载其依赖项之一时,VB6 IDE 会阻塞,但它并不能说明无法满足哪个依赖项——甚至哪个引用具有无法满足的依赖。这是我公司经常发生的事情,所以我试图补充 VB6 IDE 的故障排除信息。
相关细节/尝试:
- 我确实有VB源代码。这告诉我回购中特定修订版的 GUID 和版本,但是在分析 DLL/OCX/TLB 文件时,我不知道回购的哪个版本(如果有的话——可能来自分支或可能永远不会有已提交到分支)给定的 DLL/OCX 对应。
- 我试过使用
tlbinf32.dll
,但它似乎无法列出导入。 - 我对 PE 了解不多,但我在 PE 查看器中打开了其中一个 DLL,它只显示
MSVBVM60.dll
在导入部分。这似乎是 VB6 生成的类型库的一个特殊怪癖:它们仅链接到MSVBVM60
其余依赖项,但具有某种延迟加载机制。 - 即使我尝试过的大多数现有工具都没有提供信息——例如,depends.exe 只能找到
MSVBVM60.dll
. - 但是:OLEView,一个用于与 Visual Studio 一起发布的实用程序,以某种方式生成了一个 IDL 文件,其中包含
importlib
指令。鉴于 VB 不使用 IDL 文件,它显然是在以某种方式生成信息。所以这是可能的——我只是不知道怎么做。
真的,如果 OLEView 不这样做,我现在已经放弃了,因为这是不可能的。关于如何做到这一点的任何想法?