Tương đương với ldd của Linux trên windows là gì?


Câu trả lời:


53

Đây là Dependency Walker.

http://dependencywalker.com/


5
có bất cứ điều gì giống như ldd tồn tại, chỉ dành cho dòng lệnh? Tìm kiếm thứ gì đó tôi có thể sử dụng từ một lời nhắc. Thích một lệnh nhỏ nhẹ, tốt hơn là không có thêm các DLL.
JM Becker

2
Dường như có một giao diện dòng lệnh: dependencywalker.com/help/html/hidr_command_line_help.htm
Daniel A. White

3
Cú pháp trông giống như sau: depend.exe / c /oc:dependencies.csv /ot:dependencies.txt mydll.dll
Boinst

3
Dependency Walker hoạt động tốt, nhưng là một thay đổi chói tai so với sự đơn giản của ldd (đặc biệt nếu bạn đã quen với việc viết kịch bản cho một công cụ sử dụng đầu ra của nó và thực hiện, đóng gói các tác vụ tự động với nó).
zxq9

2
Sự cố trên Windows 10.
mikemaccana

42

Các dumpbinlệnh có thể hữu ích cho nhiều thứ, mặc dù trong trường hợp này phụ thuộc walker có lẽ là một chút dài dòng hơn.

dumpbin /dependents some.dll

Ví dụ đầu ra:

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

Kết xuất tệp StanPolicy.dll

Loại tệp: DLL

Hình ảnh có các phụ thuộc sau:

mscoree.dll

Tóm lược

    2000 .reloc
    2000 .rsrc
   1E000 .text

5
Đây là tùy chọn tốt nhất nếu bạn đã cài đặt Visual Studio.
sakra

36

hoặc công cụ GNU:

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

1
Có thể dùng objdump để hiển thị đường dẫn đầy đủ không? Tôi cần một cái gì đó một cách đệ quy và điều này đòi hỏi fullpath cho mỗi DLL phụ thuộc
INS

3
objdump chỉ hiển thị cho bạn những gì tệp chứa. Nó không cố gắng thực hiện bất kỳ tra cứu đường dẫn nào giống như lddvậy.
jørgensen

26

PowerShell có thể làm điều này

PS> Start-Process -PassThru calc.exe | Get-Process -Module

   Kích thước (K) Mô-đunName
   ------- ----------
       908 calc.exe
      1700 ntdll.dll
      1148 kernel32.dll
       432 KERNELBASE.dll
     13856 SHELL32.dll
           ...

6
Điều này dường như chỉ hoạt động trong chừng mực chương trình thực sự tìm thấy các dlls - trong trường hợp thất bại, danh sách không đầy đủ.
01d55

12

Nếu bạn đang sử dụng winechứ không phải Windows thực, bạn có thể sử dụng WINEDEBUG=+loaddll wine <program>.


7
Phát triển chống lại rượu để nhắm mục tiêu của Windows đánh tôi như vậy lạ một ý tưởng tôi đã để cho nó một thử (tôi chủ yếu nhắm mục tiêu Linux) ... và thực sự nó đang làm việc ra xa mượt mà hơn tôi mong đợi cho prototyping. Rất, rất tuyệt.
zxq9

Re: development bằng Wine thay vì Windows: lưu ý rằng những gì hoạt động trong Wine sẽ không nhất thiết hoạt động trên Windows thực. Tôi đã học được điều này khi tôi quên gọi GdiplusStartupvà GDI + hoạt động mà không gặp sự cố trong Wine, trong khi trên Windows thì không. Tôi chỉ nhận thấy lỗi này sau khi gỡ lỗi chương trình trong Wine, cố gắng tiếp theo để chạy nó trong Windows.
Ruslan

8

Hiện có một lddtrong Cygwin. Nếu bạn có một phiên bản Cygwin rất cũ, bạn sẽ phải sử dụng cygcheck.


Có, nhưng nó không chính xác lắm
Stef

8

Tôi đoán cách Nhà phát triển Windows để làm điều này là sử dụng dumpbin /dependents source.exe. Nếu bạn có cài đặt Visual Studio bạn có thể tìm thấy nó ở đây: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\dumpbin.exe.


3
Quá xấu này không hiển thị nơi người phụ thuộc được tìm thấy cho đến bạn một cách chính xác có thể xem mà những người đang thực sự sử dụng trong thời gian chạy :(.
rubenvb

@rubenvb Process Explorer từ bộ SysInternals MS có chế độ xem cửa sổ thấp hơn của tất cả các tệp DLL, một tải nhị phân bao gồm đường dẫn của chúng và tìm kiếm biểu tượng / dll.
kevinf

7

Các phiên bản mới hơn của Git trên Windows được đóng gói với một thứ gọi là Git BASH , mô phỏng nhiều lệnh Unix hữu ích bao gồm ldd.

Có vẻ như nó chỉ báo cáo các thư viện có thể được tìm thấy. Vì vậy, bạn có thể sử dụng điều này để có cái nhìn tổng quan về vị trí của các thư viện đã sử dụng nhưng không bị thiếu.



0

Đối với windows 10, với visual studio 2017, tôi vào thanh tìm kiếm của windows và nhập:

"Developer Command Prompt cho VS 2017" (cmd.exe đặc biệt dành cho nhà phát triển Visual studio)

Điều này cho phép truy cập vào DUMPBIN sẽ được sử dụng với thẻ \ IMPORTS. Ví dụ, trong thư mục chính xác:

DUMPBIN \ IMPORTS yourfile.exe (các tiện ích mở rộng khác cũng có thể hoạt động)

Đối với tôi, danh sách này liệt kê DLL và các chức năng được sử dụng.

Ngoài ra, bạn có thể sử dụng thẻ \ ALL dài hơn nhiều.

xem giải thích của microsoft về DUMPBIN:

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

Ví dụ (chỉ với một phần) của nội dung được gửi lại bằng lệnh

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.