2010-01-03 23 views

Trả lời

44

Đây là phụ thuộc Walker.

http://dependencywalker.com/

+3

có bất kỳ thứ gì như ldd tồn tại, chỉ cho dòng lệnh không? Tìm kiếm một cái gì đó tôi có thể sử dụng từ một dấu nhắc. Ưu tiên một lệnh ánh sáng nhỏ, tốt nhất là không có thêm DLL. – TechZilla

+2

Dường như có giao diện dòng lệnh: http://www.dependencywalker.com/help/html/hidr_command_line_help.htm –

+3

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

19

Lệnh dumpbin 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à tiết hơn một chút.

dumpbin /dependents some.dll 
+1

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

24

hoặc công cụ GNU:

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

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

+2

objdump chỉ cho bạn thấy những gì tập tin chứa. Nó không cố gắng thực hiện bất kỳ tra cứu đường dẫn nào như 'ldd'. –

6

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

+0

Có, nhưng nó không phải là rất chính xác – Stef

8

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

+5

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

+0

Re: phát triển bằng cách sử dụng Wine thay vì Windows: lưu ý rằng những gì làm việc trong Wine sẽ không nhất thiết phải hoạt động trên Windows thực. Tôi đã học được điều này khi tôi quên gọi 'GdiplusStartup', và GDI + làm việc mà không có vấn đề gì trong Wine, trong khi trên Windows thì không. Tôi chỉ nhận thấy sai lầm 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

19

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

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

    Size(K) ModuleName 
    ------- ---------- 
     908 calc.exe 
     1700 ntdll.dll 
     1148 kernel32.dll 
     432 KERNELBASE.dll 
    13856 SHELL32.dll 
      ... 
+3

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

6

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

+0

Rất tệ, điều này không cho thấy nơi người phụ thuộc được tìm thấy để bạn có thể thấy chính xác cái nào thực sự được sử dụng trong thời gian chạy :(. – rubenvb

3

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

Dường 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 một cái nhìn tổng quan về nơi mà các thư viện được sử dụng được đặt, nhưng không phải là thiếu.

Các vấn đề liên quan