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

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

本文关键字:DLL 列表 文件 何找出 依赖于 LIB      更新时间:2023-10-16

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

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

是否有选项可以查看链接到库文件(.lib(的 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.objprog的 DLL 依赖项,反之亦然。 没有任何通过链接abc.lib而不是a.objc.obj来隐藏的。

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