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

时间:2017-07-17 08:26:34

标签: c++ visual-studio debugging dll static-libraries

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

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

是否可以选择查看链接到库文件(。lib)的DLL列表?

2 个答案:

答案 0 :(得分:1)

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

因此,假设abc.lib包含目标文件a.objb.objc.obj。您可以通过关联progmain.obj来构建计划abc.libmain.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并没有隐藏任何内容。

答案 1 :(得分:0)

我要做的测试是使用静态库创建一个虚拟dll,然后看一下带有依赖性walker的dll(或使用vs链接进程)并查找链接的dll。

相关问题