2008-12-09 12 views
17

सभी डीएलएल निर्भरताओं को खोजने के लिए कौन सी कमांड लाइन उपकरण मौजूद हैं? मैंने dumpbin और Dependency Walker (उर्फ Depends.exe) की कोशिश की जो विजुअल स्टूडियो के साथ आती है, लेकिन डंपबिन केवल निर्भरता के पहले स्तर को पाता है, और निर्भरता वॉकर का आउटपुट वास्तव में कंप्यूटर अनुकूल नहीं है।डीएल निर्भरताओं को खोजने के लिए कमांड लाइन उपकरण

उत्तर

14

अल्पविराम से अलग मूल्य फ़ाइल लिखने के लिए /oc:FILENAME विकल्प पर निर्भर करता है। ऐसा लगता है कि/ot: FILENAME/विकल्प द्वारा उत्पन्न "मुक्त-फ़ॉर्म" टेक्स्ट फ़ाइल की तुलना में मशीन द्वारा पार्स करना आसान है।

+1

शक्तियों में, आप हैं सभी सेट: depend.exe /oc:tmp.txt file.dll; आयात-सीएसवी tmp.txt | स्वरूप-तालिका -ऑटोसाइज आपको एक सुंदर, फ़िल्टर करने योग्य तालिका देता है। – jhclark

8

Dependency Walker में many options आउटपुट-टू-फ़ाइल विकल्प शामिल हैं। इनमें से एक /oc:<path> है जो आउटपुट को CSV file पर लिखता है, जिसे आसानी से अन्य टूल्स द्वारा पार्स किया जाता है या यहां तक ​​कि केवल स्प्रेडशीट एप्लिकेशन में आयात किया जाता है।

आपके लिए निर्भरताओं की आवश्यकता के आधार पर आपके पास वास्तव में क्रॉस-प्लेटफ़ॉर्म टूल भी हो सकते हैं - उदाहरण के लिए CMake fixup-bundle जो सभी ज्ञात गैर-सिस्टम निर्भरताओं को आपके लक्ष्य (निष्पादन योग्य या साझा लाइब्रेरी) के स्थान पर कॉपी कर सकता है। विंडोज़ पर भी। दस्तावेज़ीकरण स्पष्ट रूप से इसे स्पष्ट नहीं करता है लेकिन मैं थोड़ी देर के लिए क्रॉस-प्लेटफ़ॉर्म प्रोजेक्ट पर उस उद्देश्य के लिए इसका उपयोग कर रहा हूं।

+0

प्रश्न में उल्लिखित "निर्भर करता है" निर्भरता वॉकर का exe नाम है। – unwind

+0

निर्भर करता है और निर्भरता वॉकर और एक ही चीज़। मुझे पता है कि इसे कमांड लाइन में चलाया जा सकता है, लेकिन मैंने कहा कि आउटपुट कंप्यूटर अनुकूल नहीं है। – Jazz

+0

हाँ, मुझे याद आया - सवाल पढ़ने के लिए बहुत जल्दी होने के लिए मेरा बुरा। लेकिन मैंने ऊपर अविवाइंड के जवाब का इरादा किया - सीएसवी संस्करण पार्स करना आसान है। –

2

/oc:<path> विकल्प का उपयोग करके, Dependency Walker आपको CSV file देता है जिसे आसानी से पार्स किया जाता है। यदि आप पुस्तकालयों के पथ भी चाहते हैं तो आपको -f 1 विकल्प का उपयोग करने की भी आवश्यकता है। यदि आप पुस्तकालयों की प्रतिलिपि बनाने की आवश्यकता है (उदाहरण के लिए निष्पादन योग्य का वितरित संस्करण बनाने के लिए) तो आप ऐसा करना चाहेंगे।

दुर्भाग्य से depend.exe से आउटपुट में पुस्तकालयों के पथ को लोअरकेस में परिवर्तित कर दिया गया है और डीएलएल नाम को अपरकेस में परिवर्तित कर दिया गया है। उदाहरण के लिए,

c: \ qtsdk \ डेस्कटॉप \ क्यूटी \ 4.7.4 \ MinGW \ बिन \ QTCORE4.DLL

पुस्तकालय वास्तव में में स्थित है जब:

सी : \ QtSDK \ डेस्कटॉप \ क्यूटी \ 4.7.4 \ MinGW \ बिन \ QtCore4.dll

वहाँ एक तरह से Depends.exe पथ सही ढंग से रिपोर्ट करने के लिए जो शर्म की बात है है पाने के लिए होने के लिए प्रतीत नहीं होता।

+2

शब्द "शर्म" – ceztko

+3

ऊपरी, निचले .... कॉन्फ़िगरेशन के बिना +1, विंडोज़ बिल्कुल परवाह नहीं करता है! – relascope

संबंधित मुद्दे