如何找出依赖于 LIB 文件的 DLL 列表?

How to find out the list of DLLs dependent on a LIB file?

由于我的项目非常庞大,在调试时我手动禁用了Visual Studio中所有模块的加载,然后那些我必须加载的DLL调试。这按预期工作。

但是由于 Visual Studio 中的模块列表不包含 LIB 文件,我如何调试特定静态库中的代码?

是否有查看链接到库文件的 DLL 列表的选项 (.lib)

作为测试,我会做的是使用静态库创建一个虚拟 dll,然后使用 dependency walker(或使用 vs 链接过程)查看 dll 并找到链接的 dll。

静态库没有链接任何东西。它只是一袋 您提供给链接器的目标文件,从中选择 它需要在你的程序中定义外部符号。 它从静态库中提取它需要的目标文件 并将它们嵌入到您的程序中。

因此,假设 abc.lib 包含目标文件 a.objb.objc.obj。您通过链接 main.objabc.lib 构建程序 progmain.obj 需要 a.obj 中定义的内容加上 c.obj 中定义的内容,但 b.obj 中未定义任何内容。那么 prog 就好像你只是简单地链接了三个目标文件 main.obja.objc.obj 而根本没有提到 abc.lib 一样。

现在 a.objc.obj 可能会调用外部定义的函数 一个或多个 DLL。也许 main.obj 调用外部的函数 在相同或其他 DLL 中定义。 prog 必须与 那些 DLL - 不多也不少。 main.obj 的 DLL 依赖项 + a.obj + c.obj 是您的 prog 的 DLL 依赖项,反之亦然。 链接 abc.lib 而不是 a.objc.obj.

不会隐藏任何内容