Windows下Linux的ldd等效于什么?


Answers:


53

这是Dependency Walker。

http://dependencywalker.com/


5
是否只有ldd之类的东西存在(仅适用于命令行)?在提示中寻找可以使用的内容。最好使用小的light命令,最好不要使用额外的DLL。
JM Becker


3
语法如下所示:depends.exe / c /oc:dependencies.csv /ot:dependencies.txt mydll.dll
Boinst

3
Dependency Walker可以很好地工作,但是与ldd的简单性相比是一个巨大的变化(尤其是如果您习惯于编写脚本脚本来消耗工具的输出并自动打包任务的话)。
zxq9

2
在Windows 10上崩溃
。– mikemaccana

42

dumpbin命令对许多事情都可能有用,尽管在这种情况下,依赖行者可能更冗长一些。

dumpbin /dependents some.dll

输出示例:

C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ Team Tools \ Static Analysis Tools> dumpbin / depends StanPolicy.dll

文件StanPolicy.dll的转储

档案类型:DLL

图像具有以下依赖性:

mscoree.dll

概要

    2000 .reloc
    2000 .rsrc
   1E000 .text

5
如果您已安装Visual Studio,这是最佳选择。
sakra 2015年

35

或GNU工具:

i586-mingw32msvc-objdump -p  *.exe    | grep 'DLL Name:'

1
objdump可以用于显示完整路径吗?我需要递归操作,这需要每个依赖DLL的全路径
INS

3
objdump仅显示文件包含的内容。它不会像尝试那样尝试进行任何路径查找ldd
约根森

26

PowerShell可以做到这一点

PS>启动过程-PassThru calc.exe | 获取流程模块

   尺寸(K)模块名称
   ------- ----------
       908 calc.exe
      1700 ntdll.dll
      1148 kernel32.dll
       第432章
     13856 SHELL32.dll
           ...

6
这似乎仅在程序实际找到dll的情况下才起作用-如果失败,则列表不完整。
2016年

12

如果您使用的wine不是Windows,则可以使用WINEDEBUG=+loaddll wine <program>


7
对葡萄酒发展目标为Windows让我觉得太奇怪的想法,我不得不给它一个尝试(我主要目标Linux)......实际上这是工作了更光滑,比我预期的原型。非常非常酷
zxq9

回复:使用Wine而不是Windows进行开发:请注意,在Wine中起作用的不一定在实际Windows上起作用。当我忘记打电话给我时,我学到了这一点GdiplusStartup,而GDI +在Wine中工作没有问题,而在Windows上却没有。在Wine中调试程序,然后尝试在Windows中运行该程序后,我才注意到此错误。
Ruslan


8

我猜想Windows Developer可以使用dumpbin /dependents source.exe。如果您安装了Visual Studio,则可以在此处找到它C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\dumpbin.exe


3
太糟糕了,这不能显示在哪里找到依赖项,因此您可以准确地看到运行时实际使用了哪些依赖项:(
。– rubenvb

SysInternals MS Suite的@rubenvb Process Explorer具有二进制加载的所有DLL的下部窗格视图,包括它们的路径和符号/ dll搜索。
凯文夫

7

Windows上较新版本的Git带有称为Git BASH的软件包,该软件包可模拟许多有用的Unix命令,包括ldd。

似乎它仅报告可以找到的库。因此,您可以使用它来获得使用过的库所在位置的概览,但不会缺少丢失的库。



0

对于使用Visual Studio 2017的Windows 10,我进入Windows的搜索栏并输入:

“ VS 2017的开发人员命令提示符”(Visual Studio开发人员的特殊cmd.exe)

这允许访问应与\ IMPORTS标记一起使用的DUMPBIN。例如,在正确的目录中:

DUMPBIN \ IMPORTS yourfile.exe(其他扩展名也可以工作)

对我而言,此列表列出了DLL和使用的功能。

或者,您可以使用\ ALL标记,它更加冗长。

请参阅DUMPBIN的Microsoft说明:

https://docs.microsoft.com/zh-cn/cpp/build/reference/imports-dumpbin?view=vs-2019

该命令发送回的内容的示例(只有一部分)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.