ฉันมีไฟล์ไบนารี - ไลบรารีคงที่ของ Windows (* .lib)
มีวิธีง่ายๆในการหาชื่อฟังก์ชั่นและส่วนต่อประสานจากไลบรารีนั้นหรือไม่?
มีบางสิ่งที่คล้ายกันemfar
และelfdump
ยูทิลิตี้ (บนระบบ Linux)?
ฉันมีไฟล์ไบนารี - ไลบรารีคงที่ของ Windows (* .lib)
มีวิธีง่ายๆในการหาชื่อฟังก์ชั่นและส่วนต่อประสานจากไลบรารีนั้นหรือไม่?
มีบางสิ่งที่คล้ายกันemfar
และelfdump
ยูทิลิตี้ (บนระบบ Linux)?
คำตอบ:
สมมติว่าคุณกำลังพูดถึงห้องสมุดคงDUMPBIN /SYMBOLS
แสดงฟังก์ชั่นและวัตถุข้อมูลในห้องสมุด หากคุณกำลังพูดคุยเกี่ยวกับห้องสมุดที่นำเข้า (ก.lib
ใช้เพื่อหมายถึงสัญลักษณ์ที่ส่งออกจาก DLL) DUMPBIN /EXPORTS
แล้วคุณต้องการ
โปรดทราบว่าสำหรับฟังก์ชั่นที่เชื่อมโยงกับอินเทอร์เฟซแบบไบนารี "C" สิ่งนี้จะไม่ทำให้คุณได้รับคืนค่าพารามิเตอร์หรือการเรียกประชุม ข้อมูลนั้นไม่ได้เข้ารหัส.lib
เลย คุณต้องรู้ล่วงหน้าก่อน (เช่นตัวต้นแบบในไฟล์ส่วนหัว) เพื่อที่จะเรียกมันอย่างถูกต้อง
สำหรับฟังก์ชั่นที่เชื่อมโยงกับอินเทอร์เฟซไบนารีของ C ++ การประชุมและข้อโต้แย้งจะถูกเข้ารหัสในชื่อที่ส่งออกของฟังก์ชัน (เรียกอีกอย่างว่า "ชื่อ mangling") DUMPBIN /SYMBOLS
จะแสดงทั้งชื่อฟังก์ชั่น "mangled" เช่นเดียวกับชุดถอดรหัสของพารามิเตอร์
เปิดคอนโซลคำสั่งภาพ (Visual Studio Command Prompt)
dumpbin /ARCHIVEMEMBERS openssl.x86.lib
หรือ
lib /LIST openssl.x86.lib
หรือเพียงแค่เปิดด้วย 7-zip :) เป็นไฟล์ AR
ฉันต้องการเครื่องมือเหมือนar t libfile.a
ยูนิกซ์ เทียบเท่าหน้าต่างเป็น
lib.exe /list libfile.lib
"dumpbin -export" ใช้งานได้กับ dll แต่บางครั้งอาจไม่ทำงานสำหรับ lib สำหรับ lib เราสามารถใช้ "dumpbin -linkermember" หรือเพียงแค่ "dumpbin -linkermember: 1"
LIB.EXE เป็นบรรณารักษ์สำหรับ VS
http://msdn.microsoft.com/en-us/library/7ykb2k5f(VS.80).aspx
(เช่น libtool บน Unix)
DUMPBIN / EXPORTS จะได้รับข้อมูลส่วนใหญ่และการกดปุ่ม MSDN จะทำให้ได้รับส่วนที่เหลือ
รับแพ็คเกจ Visual Studio อย่างใดอย่างหนึ่ง C ++
1) เปิดพร้อมรับคำสั่งสำหรับนักพัฒนาสำหรับ VS 2017 (หรือรุ่นใดก็ตามที่คุณมีบนเครื่องของคุณ) (ควรอยู่ภายใต้: เมนูเริ่ม -> โปรแกรมทั้งหมด -> Visual Studio 2017 (หรือรุ่นใดก็ตามที่คุณมีบนเครื่องของคุณ) -> เครื่องมือ Visual Studio -> พร้อมรับคำสั่งสำหรับนักพัฒนาสำหรับ VS 2017
2) ป้อนคำสั่งต่อไปนี้:
dumpbin /EXPORTS my_lib_name.lib
เช่นเดียวกับที่เห็นได้ในคำตอบอื่น ๆ คุณจะต้องเปิดพรอมต์คำสั่งสำหรับนักพัฒนาที่เสนอใน Visual Studio เวอร์ชันของคุณเพื่อให้มีdumpbin.exe
ในเส้นทางการทำงานของคุณ มิฉะนั้นคุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมที่จำเป็นด้วยมือ
dumpbin /EXPORTS yourlibrary.lib
โดยปกติจะแสดงรายการสัญลักษณ์เพียงเล็กน้อย ในหลายกรณีมันจะไม่แสดงฟังก์ชั่นการส่งออกของห้องสมุด
dumpbin /SYMBOLS /EXPORTS yourlibrary.lib
จะแสดงสัญลักษณ์นั้น แต่ยังเป็น symbos อื่น ๆ อีกจำนวนมหาศาลอย่างไม่น่าเชื่อ ดังนั้นคุณจะต้องกรองพวกเขาอาจจะมีท่อไปfindstr
(ถ้าคุณต้องการเป็นเครื่องมือ MS-Windows) grep
หรือ
การค้นหาStatic
คำหลักโดยใช้หนึ่งในเครื่องมือเหล่านี้ดูเหมือนจะเป็นคำแนะนำที่ดี