วิธีดูเนื้อหาของไลบรารี Windows (* .lib)


181

ฉันมีไฟล์ไบนารี - ไลบรารีคงที่ของ Windows (* .lib)
มีวิธีง่ายๆในการหาชื่อฟังก์ชั่นและส่วนต่อประสานจากไลบรารีนั้นหรือไม่?

มีบางสิ่งที่คล้ายกันemfarและelfdumpยูทิลิตี้ (บนระบบ Linux)?


1
หมายเหตุ: พรอมต์คำสั่งเฉพาะสำหรับ. NET มาพร้อมกับ Visual Studio editions แต่ไม่มีใน Express edition จาก: social.msdn.microsoft.com/Forums/en-US/ …
รับ

คำตอบ:


199

สมมติว่าคุณกำลังพูดถึงห้องสมุดคงDUMPBIN /SYMBOLSแสดงฟังก์ชั่นและวัตถุข้อมูลในห้องสมุด หากคุณกำลังพูดคุยเกี่ยวกับห้องสมุดที่นำเข้า (ก.libใช้เพื่อหมายถึงสัญลักษณ์ที่ส่งออกจาก DLL) DUMPBIN /EXPORTSแล้วคุณต้องการ

โปรดทราบว่าสำหรับฟังก์ชั่นที่เชื่อมโยงกับอินเทอร์เฟซแบบไบนารี "C" สิ่งนี้จะไม่ทำให้คุณได้รับคืนค่าพารามิเตอร์หรือการเรียกประชุม ข้อมูลนั้นไม่ได้เข้ารหัส.libเลย คุณต้องรู้ล่วงหน้าก่อน (เช่นตัวต้นแบบในไฟล์ส่วนหัว) เพื่อที่จะเรียกมันอย่างถูกต้อง

สำหรับฟังก์ชั่นที่เชื่อมโยงกับอินเทอร์เฟซไบนารีของ C ++ การประชุมและข้อโต้แย้งจะถูกเข้ารหัสในชื่อที่ส่งออกของฟังก์ชัน (เรียกอีกอย่างว่า "ชื่อ mangling") DUMPBIN /SYMBOLSจะแสดงทั้งชื่อฟังก์ชั่น "mangled" เช่นเดียวกับชุดถอดรหัสของพารามิเตอร์


6
ทั้ง / สัญลักษณ์และ / ส่งออกไม่ทำงานในปัจจุบัน ฉันต้องใช้ / ALL กับ | ไปป์เพื่อดูฟังก์ชั่นทั้งหมดในไฟล์. lib
user5280911

100

เปิดคอนโซลคำสั่งภาพ (Visual Studio Command Prompt)

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

หรือ

lib /LIST openssl.x86.lib

หรือเพียงแค่เปิดด้วย 7-zip :) เป็นไฟล์ AR


19
เคล็ดลับเด็ด ๆ ที่มี 7-zip ดูเหมือนว่าจะมีไฟล์. txt สองไฟล์หมายความว่าอะไร
เดเมียน

21

ฉันต้องการเครื่องมือเหมือนar t libfile.aยูนิกซ์ เทียบเท่าหน้าต่างเป็น
lib.exe /list libfile.lib


4
ใช่ lib จะ (เท่านั้น) แสดงไฟล์ obj; มันจะไม่แสดงฟังก์ชั่นและข้อมูลในไฟล์ obj
user34660

14

"dumpbin -export" ใช้งานได้กับ dll แต่บางครั้งอาจไม่ทำงานสำหรับ lib สำหรับ lib เราสามารถใช้ "dumpbin -linkermember" หรือเพียงแค่ "dumpbin -linkermember: 1"



13

DUMPBIN / EXPORTS จะได้รับข้อมูลส่วนใหญ่และการกดปุ่ม MSDN จะทำให้ได้รับส่วนที่เหลือ

รับแพ็คเกจ Visual Studio อย่างใดอย่างหนึ่ง C ++


3

1) เปิดพร้อมรับคำสั่งสำหรับนักพัฒนาสำหรับ VS 2017 (หรือรุ่นใดก็ตามที่คุณมีบนเครื่องของคุณ) (ควรอยู่ภายใต้: เมนูเริ่ม -> โปรแกรมทั้งหมด -> Visual Studio 2017 (หรือรุ่นใดก็ตามที่คุณมีบนเครื่องของคุณ) -> เครื่องมือ Visual Studio -> พร้อมรับคำสั่งสำหรับนักพัฒนาสำหรับ VS 2017

2) ป้อนคำสั่งต่อไปนี้:

dumpbin /EXPORTS my_lib_name.lib


2

เช่นเดียวกับที่เห็นได้ในคำตอบอื่น ๆ คุณจะต้องเปิดพรอมต์คำสั่งสำหรับนักพัฒนาที่เสนอใน Visual Studio เวอร์ชันของคุณเพื่อให้มีdumpbin.exeในเส้นทางการทำงานของคุณ มิฉะนั้นคุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมที่จำเป็นด้วยมือ

dumpbin /EXPORTS yourlibrary.libโดยปกติจะแสดงรายการสัญลักษณ์เพียงเล็กน้อย ในหลายกรณีมันจะไม่แสดงฟังก์ชั่นการส่งออกของห้องสมุด

dumpbin /SYMBOLS /EXPORTS yourlibrary.libจะแสดงสัญลักษณ์นั้น แต่ยังเป็น symbos อื่น ๆ อีกจำนวนมหาศาลอย่างไม่น่าเชื่อ ดังนั้นคุณจะต้องกรองพวกเขาอาจจะมีท่อไปfindstr(ถ้าคุณต้องการเป็นเครื่องมือ MS-Windows) grepหรือ

การค้นหาStaticคำหลักโดยใช้หนึ่งในเครื่องมือเหล่านี้ดูเหมือนจะเป็นคำแนะนำที่ดี

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