2010-01-19 9 views
7

पर डीएलएल लोड करने में असमर्थ मेरे पास मेरे सी # प्रोजेक्ट में सी ++ डीएल है, यह मेरी विंडो एक्सपी मशीन पर ठीक है, लेकिन जब मैं विंडो 2003 सर्वर (x64) पर अपनी डीबग प्रोजेक्ट कॉपी करता हूं, तो मुझे प्राप्त हुआ नीचे त्रुटि, क्या कोई मुझे बता सकता है कि यह समस्या क्या है, और मैं इसे कैसे ठीक कर सकता हूं।System.DllNotFoundException: विंडो 2003

धन्यवाद

"System.DllNotFoundException: DLL 'lib.dll' लोड करने में असमर्थ: यह आवेदन शुरू करने के लिए, क्योंकि आवेदन विन्यास गलत है असफल हो गया है अनुप्रयोग को पुनर्स्थापित करना इस समस्या को ठीक कर सकते हैं।"

+0

क्या आवेदन निर्देशिका में 'lib.dll' मौजूद है? – leppie

+0

हाँ, यह है, लेकिन त्रुटि अभी भी दिखाई दे रही है .. क्या किसी को भी ठीक करने का तरीका पता है..मुझे बहुत निराशा होती है ... – Rick

+1

lib.dll डीबग में भी बनाया गया है? यह डीबग सी ++ रनटाइम के खिलाफ लिंक करने का प्रयास कर रहा है जो विंडोज 2003 मशीन पर विजुअल स्टूडियो स्थापित नहीं होने पर स्थापित नहीं किया जाएगा। – shf301

उत्तर

6

के लिए डीएलएल लोडिंग समस्या, मैं आपको Dependency Walker उपकरण का उपयोग करने का सुझाव देता हूं। ऐसी समस्याओं से निपटने के दौरान यह मूल्यवान साबित हुआ है क्योंकि यह आपको सही समस्या दिखाएगा।

यदि आपके पास विजुअल स्टूडियो 2005 है, तो आप इसे C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin\depends.exe में पा सकते हैं।

अद्यतन:

MSVCR90D.DLL विजुअल C++ रनटाइम 9.0 की डिबग संस्करण है। इसका उपयोग केवल डीबगिंग उद्देश्य के लिए किया जाना चाहिए। डीएलएल लोडिंग समस्या से बचने के लिए मैं दृढ़ता से आपकी लाइब्रेरी का एक रिलीज़ संस्करण बनाने का सुझाव देता हूं। हालांकि, अगर आपको पूरी तरह से डीबग संस्करण को तैनात करने की आवश्यकता है, तो आपको C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86 में सभी आवश्यक DLLs मिलेंगे।

+0

धन्यवाद! आपके जवाब ने मुझे एक बड़े तरीके से मदद की। निर्भरता वॉकर समस्या की जड़ के लिए सही हो गया। – vfilby

+0

टिकट था। मैं इस मुद्दे के साथ एक सप्ताह के लिए unity3d में संघर्ष कर रहा हूं। –

11

यह शिकायत कर रहा है कि इसे सीआरटी डीएलएस का पता लगाने में परेशानी है। सबसे पहले जांचें कि डीएलएल में आवश्यक मैनिफेस्ट है। विजुअल स्टूडियो में, फ़ाइल + ओपन + फ़ाइल, डीएलएल का चयन करें और सत्यापित करें कि इसमें एक RT_MANIFEST नोड है। अगली समस्या यह है कि आप अपने डीएलएल के डीबग बिल्ड को तैनात नहीं कर सकते हैं। यह सीआरटी के डीबग संस्करण पर निर्भरता होगी, आप लक्ष्य मशीन पर स्थापित नहीं कर सकते हैं।

या तो अपने डीएलएल के रिलीज बिल्ड को तैनात करें या डीएलएल को/एमटी विकल्प के साथ संकलित करें ताकि सीआरटी स्थिर रूप से जुड़ा हुआ हो। परियोजना + गुण, सी/सी ++, कोड जनरेशन, रनटाइम लाइब्रेरी। यदि डीएलएल को/क्लियर विकल्प के साथ संकलित किया गया तो यह काम नहीं करेगा।

1

लगता है जैसे आपने लक्ष्य मशीन पर दृश्य C++ रनटाइम स्थापित नहीं किया है। आप इसे here से इंस्टॉल कर सकते हैं क्योंकि ऐसा लगता है कि उन डीएलएस के डीबग संस्करणों का उपयोग करना संभवतः आपको रिलीज मोड में अपना एप बनाने की भी आवश्यकता है? This post और this one कुछ अन्य सुझाव हैं जो मदद कर सकते हैं ...

2

lib.dll 32-बिट DLL है? आपका सी # प्रोग्राम x64 पर मूल रूप से चलाएगा लेकिन 32-बिट डीएलएल लोड करने में असमर्थ होगा। आप C# प्रोजेक्ट के लक्ष्य सीपीयू को "x86" में बदलने के लिए इसे WOW64 के अंतर्गत चलाने के लिए मजबूर करने का प्रयास कर सकते हैं।

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