อะไรคือสิ่งที่เทียบเท่ากับ ldd ของ Linux บน windows?


คำตอบ:


55

นี่คือ Dependency Walker

http://dependencywalker.com/


6
มีอะไรเช่น ldd สำหรับบรรทัดคำสั่งเท่านั้น? กำลังมองหาสิ่งที่ฉันสามารถใช้ได้จากข้อความแจ้ง ต้องการคำสั่งแสงขนาดเล็กโดยเฉพาะอย่างยิ่งไม่มี DLL เพิ่มเติม
JM Becker

2
ดูเหมือนว่ามีอินเทอร์เฟซบรรทัดคำสั่ง: dependencywalker.com/help/html/hidr_command_line_help.htm
Daniel A. White

3
ไวยากรณ์มีลักษณะบางอย่างเช่นนี้ depends.exe / C /oc:dependencies.csv /ot:dependencies.txt mydll.dll
Boinst

3
Dependency Walker ทำงานได้ดี แต่เป็นการเปลี่ยนแปลงที่สั่นสะเทือนจากความเรียบง่ายของ ldd (โดยเฉพาะอย่างยิ่งถ้าคุณคุ้นเคยกับการเขียนสคริปต์เครื่องมือที่ใช้ผลลัพธ์และทำเช่นบรรจุหีบห่อโดยอัตโนมัติด้วย)
zxq9

2
เกิดปัญหาบน Windows 10
mikemaccana

43

dumpbinคำสั่งจะมีประโยชน์สำหรับหลายสิ่งหลายอย่างแม้ในกรณีนี้การพึ่งพาวอล์คเกอร์น่าจะเป็นเล็ก ๆ น้อย ๆ มากขึ้นอย่างละเอียด

dumpbin /dependents some.dll

ตัวอย่างผลลัพธ์:

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

การถ่ายโอนไฟล์ StanPolicy.dll

ประเภทไฟล์: DLL

รูปภาพมีการอ้างอิงดังต่อไปนี้:

mscoree.dll

สรุป

    2000 .reloc
    2000 .rsrc
   1E000 .text

5
นี่เป็นตัวเลือกที่ดีที่สุดหากคุณติดตั้ง Visual Studio ไว้
sakra

38

หรือเครื่องมือ GNU:

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

1
สามารถใช้ objdump เพื่อแสดงพา ธ แบบเต็มได้หรือไม่? ฉันต้องการบางอย่างแบบวนซ้ำและสิ่งนี้ต้องการ fullpath สำหรับ DLL ที่ขึ้นอยู่กับแต่ละตัว
INS

4
objdump แสดงเฉพาะสิ่งที่ไฟล์มีอยู่ ไม่พยายามทำการค้นหาเส้นทางใด ๆ เหมือนที่lddทำ
jørgensen


13

หากคุณใช้wineและไม่ใช่ Windows จริงคุณสามารถใช้WINEDEBUG=+loaddll wine <program>ไฟล์.


7
การพัฒนากับไวน์ที่จะกำหนดเป้าหมายของ Windows หลงฉันเป็นที่แปลกดังนั้นความคิดผมจะให้มันลอง (ฉันเป้าหมายหลักลินุกซ์) ความจริง ... และมันจะทำงานออกไกลนุ่มนวลกว่าที่ผมคาดไว้สำหรับการสร้างต้นแบบ มากเย็นมาก
zxq9

Re: การพัฒนาโดยใช้ Wine แทน Windows: โปรดทราบว่าสิ่งที่ทำงานใน Wine ไม่จำเป็นต้องทำงานบน Windows จริง ฉันได้เรียนรู้สิ่งนี้เมื่อฉันลืมโทรGdiplusStartupและ GDI + ทำงานได้โดยไม่มีปัญหาใน Wine ในขณะที่ใช้ Windows ก็ไม่ได้ ฉันสังเกตเห็นข้อผิดพลาดนี้หลังจากที่ได้ทำการดีบักโปรแกรมใน Wine แล้วพยายามเรียกใช้ใน Windows ถัดไป
Ruslan

ฉันทดสอบสิ่งต่างๆเกี่ยวกับ Wine ตลอดเวลาเพื่อหลีกเลี่ยงการรีสตาร์ทและเปลี่ยน OS อย่างไรก็ตามเป็นแนวทางปฏิบัติที่ดีก่อนการเปิดตัวครั้งใหญ่หรือทุกครั้งที่คุณได้ทำบางสิ่งที่รู้สึกสงสัยแม้เพียงเล็กน้อย - เพื่อทดลองใช้บน Windows เนทีฟด้วย
Michael Macha

9

ตอนนี้มีlddใน Cygwin หากคุณมีรุ่น Cygwin cygcheckเก่ามากที่คุณจะต้องใช้


ใช่ แต่มันไม่ถูกต้องมากนัก
Stef

8

ผมคิดว่าวิธีที่พัฒนา Windows dumpbin /dependents source.exeจะทำเช่นนี้คือการใช้ หากคุณมีการติดตั้ง Visual Studio C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\dumpbin.exeคุณสามารถค้นหาได้ที่นี่:


3
น่าเสียดายที่นี่ไม่ได้แสดงว่าพบผู้ติดตามที่ใดเพื่อให้คุณสามารถดูได้อย่างแม่นยำว่าอันไหนถูกใช้ในรันไทม์ :(
rubenvb

@rubenvb Process Explorer จาก SysInternals ชุด MS มีมุมมองบานหน้าต่างด้านล่างของ DLL ทั้งหมดที่โหลดไบนารีรวมถึงเส้นทางและการค้นหาสัญลักษณ์ / dll
Kevin

7

Git เวอร์ชันใหม่กว่าบน Windows มาพร้อมกับสิ่งที่เรียกว่าGit BASHซึ่งเลียนแบบคำสั่ง Unix ที่มีประโยชน์มากมายรวมถึง ldd

ปรากฏว่ารายงานเฉพาะไลบรารีที่สามารถพบได้ ดังนั้นคุณสามารถใช้สิ่งนี้เพื่อดูภาพรวมว่าไลบรารีที่ใช้อยู่นั้นอยู่ที่ใด แต่ไม่ได้หายไป



0

สำหรับ windows 10 ด้วย visual studio 2017 ฉันไปที่แถบค้นหาของ windows แล้วพิมพ์:

"พรอมต์คำสั่งสำหรับนักพัฒนาสำหรับ VS 2017" (cmd.exe พิเศษสำหรับนักพัฒนา Visual studio)

สิ่งนี้ทำให้สามารถเข้าถึง DUMPBIN ที่ควรใช้กับแท็ก / IMPORTS ตัวอย่างเช่นในไดเร็กทอรีที่ถูกต้อง:

DUMPBIN / IMPORTS yourfile.exe (ส่วนขยายอื่น ๆ อาจใช้งานได้เช่นกัน)

สำหรับฉันนี่คือรายการ DLL และฟังก์ชันที่ใช้

หรือคุณสามารถใช้แท็ก \ ALL ที่ละเอียดกว่ามาก

ดูคำอธิบายของ Microsoft เกี่ยวกับ DUMPBIN:

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

ตัวอย่าง (มีเพียงบางส่วน) ของเนื้อหาที่ส่งกลับโดยคำสั่ง


ตัวอย่างที่สมบูรณ์เช่นdumpbin /imports *.dll | find /i ".dll"
Mohammad Kanan

นอกจากคำตอบเก่า ๆ ที่ยอดเยี่ยม!
Mohammad Kanan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.