से "/ DEFAULTLIB" कहां से आ रहा है यह निर्धारित करने के लिए कि मैं यह निर्धारित करने का एक अच्छा तरीका खोजने का प्रयास कर रहा हूं कि लिंक समय पर कौन सा मॉड्यूल एक निश्चित लाइब्रेरी को "/ DEFAULTLIB" के रूप में संसाधित करने के कारण उत्पन्न कर रहा है विजुअल स्टूडियो से वर्बोज़ लिंकर आउटपुट।लिंकर समस्या:
यहां मेरी स्थिति है, मेरे पास कई स्थिर पुस्तकालय पूर्व-आवश्यकताएं हैं और प्रत्येक में एक रिलीज और डिबग संस्करण (BlahD.lib और Blah.lib) है। लिंक समय पर किसी कारण से * डी.लिब को डिफ़ॉल्ट पुस्तकालयों के रूप में संसाधित किया जाता है, भले ही मैं "अतिरिक्त निर्भरता" के रूप में निर्दिष्ट गैर-डीबग libs के साथ रिलीज का निर्माण कर रहा हूं। यदि मैं स्थिर पुस्तकालयों के डीबग संस्करणों का निर्माण कभी नहीं करता हूं तो * डी फ़ाइलें मौजूद नहीं होंगी और एक लिंकर त्रुटि होगी (फ़ाइल नहीं खोल सकता)।
मैं इन सभी अपमानजनक .lib फ़ाइलों के लिए/NODEFAULTLIB निर्दिष्ट करके सफलतापूर्वक निर्माण करने के लिए अपनी परियोजना प्राप्त कर सकता हूं। सभी रिलीज पुस्तकालयों को लिंक किया गया है और हर कोई खुश है। लेकिन मैं समझना चाहता हूं कि यहां क्या हो रहा है। लिंकर द्वारा इन * डी.लिब फ़ाइलों को संसाधित करने का कारण क्या है? क्या मेरी एकमात्र ऐसी स्क्रिप्ट लिखने की आशा है जो इस विशाल परियोजना और इसकी आश्रित परियोजनाओं (microsoft support) में सब कुछ डंपबिन्स करे? फिर भी मुझे समझ में नहीं आता कि डंपबिन आउटपुट में क्या देखना है, क्या यह .lib फ़ाइलों के साथ-साथ .obj फ़ाइलों पर भी लागू होता है?
यदि आप इन आदेशों का समर्थन करने वाली प्रणाली पर हैं, तो आप कमांड लाइन से जेनरेट की गई फ़ाइलों को आसानी से खोज सकते हैं: ढूंढें। -नाम "* .directives.txt" | xargs grep –
JamesG
मुझे यह विधि सबसे उपयोगी मिली, हालांकि सभी आउटपुट को उसी फ़ाइल में निर्देशित करना आसान पाया क्योंकि मेरे पास कई निर्देशिकाओं में सैकड़ों ऑब्जेक्ट फ़ाइलें हैं। इसके बजाय >> c: \ directives.txt के साथ रीडायरेक्ट करें। – Teknogrebo
उपर्युक्त निर्देशों की तरह लगता है कि ओबीजे और lib फ़ाइलों के भीतर सादे पाठ में आते हैं। इसलिए डंपबिन को कॉल करने की कोई ज़रूरत नहीं है।मेरे लिए बस कमांड लाइन से निम्नलिखित चल रहा है: 'findstr/m/s/c:"/DEFAULTLIB: "" mylib * .obj * .lib' –