मेरे पास एक बाइनरी फ़ाइल है - विंडोज स्टैटिक लाइब्रेरी (* .लिब)।
क्या उस लाइब्रेरी से कार्यों के नाम और उनके इंटरफ़ेस का पता लगाने का एक सरल तरीका है?
लिनक्स सिस्टम पर उपयोगिताओं emfarऔर elfdumpउपयोगिताओं के समान ?
मेरे पास एक बाइनरी फ़ाइल है - विंडोज स्टैटिक लाइब्रेरी (* .लिब)।
क्या उस लाइब्रेरी से कार्यों के नाम और उनके इंटरफ़ेस का पता लगाने का एक सरल तरीका है?
लिनक्स सिस्टम पर उपयोगिताओं emfarऔर elfdumpउपयोगिताओं के समान ?
जवाबों:
मान लें कि आप किसी स्थिर लाइब्रेरी के बारे में बात कर रहे हैं, तो लाइब्रेरी DUMPBIN /SYMBOLSमें फ़ंक्शंस और डेटा ऑब्जेक्ट दिखाता है। यदि आप एक आयात पुस्तकालय ( .libएक DLL से निर्यात किए गए प्रतीकों को संदर्भित करने के लिए उपयोग किया जाता है) के बारे में बात कर रहे हैं , तो आप चाहते हैं DUMPBIN /EXPORTS।
ध्यान दें कि "C" बाइनरी इंटरफ़ेस से जुड़े फ़ंक्शंस के लिए, यह अभी भी आपको वैल्यूज़, पैरामीटर्स या कॉलिंग कन्वेंशन नहीं लौटाएगा। वह जानकारी बिल्कुल भी एन्कोडेड नहीं है .lib; आपको यह जानना होगा कि समय के आगे (हेडर फ़ाइलों में प्रोटोटाइप के माध्यम से, उदाहरण के लिए) उन्हें सही ढंग से कॉल करने के लिए।
C ++ बाइनरी इंटरफ़ेस से जुड़े कार्यों के लिए, कॉलिंग कन्वेंशन और तर्कों को फ़ंक्शन के निर्यात किए गए नाम में एन्कोड किया जाता है (इसे "नाम मैनलिंग" भी कहा जाता है)। DUMPBIN /SYMBOLSआपको दोनों "मैंगल्ड" फ़ंक्शन नाम के साथ-साथ पैरामीटर के डिकोड किए गए सेट को दिखाएगा।
LIB.EXE VS के लिए लाइब्रेरियन है
http://msdn.microsoft.com/en-us/library/7ykb2k5f(VS.80).aspx
(यूनिक्स पर libtool की तरह)
1) वीएस 2017 के लिए एक डेवलपर कमांड प्रॉम्प्ट खोलें (या आपके मशीन पर जो भी संस्करण है) (यह नीचे स्थित होना चाहिए: प्रारंभ मेनू -> सभी कार्यक्रम -> विज़ुअल स्टूडियो 2017 (या आपके मशीन पर जो भी संस्करण है) -> विजुअल स्टूडियो टूल्स -> डेवलपर कमांड प्रॉम्प्ट VS 2017 के लिए।
2) निम्नलिखित कमांड दर्ज करें:
dumpbin /EXPORTS my_lib_name.lib
जैसे कि इसे अन्य उत्तरों में देखा जा सकता है, आपको dumpbin.exeअपने निष्पादन पथ में अपने विज़ुअल स्टूडियो के संस्करण में एक डेवलपर कमांड प्रॉम्प्ट खोलना होगा । अन्यथा, आप हाथ से आवश्यक पर्यावरण चर सेट कर सकते हैं।
dumpbin /EXPORTS yourlibrary.libआमतौर पर प्रतीकों की एक छोटी सूची दिखाएगा। कई मामलों में, यह लाइब्रेरी के कार्यों को प्रदर्शित नहीं करेगा।
dumpbin /SYMBOLS /EXPORTS yourlibrary.libउस प्रतीक को दिखाएगा, लेकिन अन्य सीबम की एक अविश्वसनीय रूप से बड़ी मात्रा में भी। तो, आप उन्हें फ़िल्टर करने के लिए, संभवतः एक पाइप के साथ findstr(यदि आप एक एमएस-विंडोज उपकरण चाहते हैं), या grep।
Staticइनमें से किसी एक टूल का उपयोग करने वाले कीवर्ड को खोजना एक अच्छा संकेत लगता है।