दिलचस्प पोस्ट
आईपैड पोर्ट्रेट और लैंडस्केप ओरिएंटेशन के लिए अलग-अलग लॉन्च / स्प्लैश स्क्रीन छवि के साथ आईफोन 6 और आईफोन 6+ का समर्थन करना क्या सत्र वास्तव में शांतता का उल्लंघन करते हैं? उद्देश्य-सी ++ कितनी अच्छी तरह समर्थित है? सत्र अनसेट, या session_destroy? पायथन में वर्ग चर को परिभाषित करने का सही तरीका DataGridView में डेटटाइम कॉलम को कैसे प्रारूपित करें? क्या यह सबलेट क्लास में जेडीबीसी कनेक्शन कोड डालना अच्छा है? शुद्ध जावास्क्रिप्ट में मैं तत्व का वर्ग कैसे टॉगल कर सकता हूं? विम पेस्ट से (और प्रतिलिपि) सिस्टम के क्लिपबोर्ड को कैसे बनायें? .NET में एक मॉड्यूल क्या है? फॉर्मूला पीएक्स डीपी, डीपी से पीएक्स एंड्रॉइड JQuery के साथ उपयोग के लिए जेएस अर्रे () जेसन ऑब्जेक्ट को कन्वर्ट करें Win32 एपीआई का उपयोग कर एक यूएसबी ड्राइव को सुरक्षित रूप से हटाएं? PHP और MySQL पृष्ठ पर अंक लगाना कैसे सी # में ऑडियो बाहर उपकरणों की गणना करने के लिए

डीएलएल लोड करने में असमर्थ (मॉड्यूल नहीं पाया जा सकता है HRESULT: 0x8007007E)

मेरे पास unmanaged C ++ API कोड के साथ डीएलएल पुस्तकालय है, मुझे अपने .NET 4.0 अनुप्रयोग में उपयोग करने की आवश्यकता है। लेकिन हर तरह से मैं अपना डीएलएल लोड करने की कोशिश करता हूं, मुझे एक त्रुटि मिलती है:

DLL 'MyOwn.dll' लोड करने में असमर्थ: निर्दिष्ट मॉड्यूल नहीं मिला। (HRESULT से अपवाद: 0x8007007 ई)

मैंने इंटरनेट पर पाया है कि सीवेरा समाधान पढ़ और मैंने कोशिश की है। कुछ भी काम नहीं करता है..

मैंने निम्नलिखित विधियों का उपयोग करने की कोशिश की है:

[DllImport("MyOwn.dll", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs((UnmanagedType.I4))] public static extern Int32 MyProIni(string DBname, string DBuser_pass, string WorkDirectory, ref StringBuilder ErrorMessage); 

जब मैंने इस लेख का पालन ​​करने की कोशिश की और जब मैं यह उदाहरण चलाया (डाउनलोड किए गए कोड से) यह बिना किसी समस्या के चलाता है (उपयोग किए गए डीएलएल बिन / डीबग फ़ोल्डर में है)

मैंने अपने डीएलएल की प्रतिलिपि बनाई है (सभी फाइलों के साथ-साथ यह मेरे बिन फ़ोल्डर में निर्भर करता है)

मैंने भी इस दृष्टिकोण की कोशिश की, लेकिन मुझे एक ही त्रुटि मिली:

 [DllImportAttribute(MyOwnLibDllPath, EntryPoint="TMproIni")] [return: MarshalAs(UnmanagedType.I4)] public static extern int MyproIni(string DBname, string DBuser_pass, string WorkDirectory, ref StringBuilder ErrorMessage); 

कोई सुझाव?

Solutions Collecting From Web of "डीएलएल लोड करने में असमर्थ (मॉड्यूल नहीं पाया जा सकता है HRESULT: 0x8007007E)"

विंडोज में जो याद आती है वह एक डीएलएल के लिए खोज आदेश है:

  1. वर्तमान निर्देशिका
  2. सिस्टम फ़ोल्डर, C:\windows\system32 or c:\windows\SysWOW64 (64-बिट बॉक्स पर 32-बिट प्रक्रिया के लिए)।
  3. Path परिवेश चर से पढ़ना

इसके अलावा मैं डीएलएल की निर्भरता की जांच करूँगा, विजुअल स्टूडियो के साथ प्रदान की गई निर्भरता वॉकर आपकी मदद कर सकता है, इसे भी मुफ्त में डाउनलोड किया जा सकता है: http://www.dependencywalker.com

आवश्यक डीएलएल निर्भरताओं को जानने के लिए आप डंपबिन उपकरण का उपयोग कर सकते हैं:

 dumpbin /DEPENDENTS my.dll 

यह आपको बताएगा कि आपके DLL को DLL को लोड करने की आवश्यकता है। विशेष रूप से एमएसवीसीआर *। Dll के लिए देखें मैंने देखा है आपका त्रुटि कोड तब होता है जब सही Visual C ++ Redistributable स्थापित नहीं है।

आप माइक्रोसॉफ्ट वेबसाइट से "दृश्य स्टूडियो 2013 के लिए दृश्य सी ++ पुनर्वितरण पैकेज प्राप्त कर सकते हैं" यह c: \ windows \ system32 \ MSVCR120.dll को इंस्टॉल करता है

फ़ाइल नाम में, 120 = 12.0 = विजुअल स्टूडियो 2013

सावधान रहें कि आपके पास डीएलएल के लक्षित प्लेटफॉर्म के लिए विज़ुअल स्टूडियो संस्करण (10.0 = वी.एस. 10, 11 = वी.एस. 2012, 12.0 = वी.एस. 2013 …) सही वास्तुकला (x64 या x 86) है, और आपको आसपास सावधानी बरतने की ज़रूरत है डिबग बिल्ड बनाता है डीएलएल का डीबग बिल्ड MSVCR120d.dll पर निर्भर करता है जो लाइब्रेरी का डीबग संस्करण है, जो कि दृश्य स्टूडियो के साथ स्थापित किया गया है लेकिन पुनर्वितरण योग्य पैकेज द्वारा नहीं है

डीएलएल के पूर्ण पथ को दर्ज करने का प्रयास करें। यदि यह काम नहीं करता है, तो सिस्टम32 फ़ोल्डर में डीएलएल को कॉपी करने का प्रयास करें।

DLL को बिन फ़ोल्डर में होना चाहिए।

दृश्य स्टूडियो में, मैं अपने प्रोजेक्ट में डीएलएल को जोड़ने (संदर्भ में नहीं, लेकिन "मौजूदा फ़ाइल जोड़ें")। फिर "प्रतिलिपि आउटपुट डायरेक्टरी" संपत्ति को डीएलएल के लिए "नया कॉपी करें" के लिए सेट करें

सुनिश्चित करें कि आपके खुद के डीएलएल के सभी निर्भरता डीएलएल के पास मौजूद हैं, या System32

एक बहुत मज़ेदार बात है (और एक तकनीकी प्रासंगिकता है) जो आपके घंटों को बर्बाद कर सकती है, इसलिए इसे यहां साझा करने के बारे में सोचा –

मैंने एक कंसोल एप्लिकेशन प्रोजेक्ट को ConsoleApplication1 और क्लास लाइब्रेरी प्रोजेक्ट ClassLibrary1

सभी कोड जो पी / इनवॉइस बना रहा था, ClassLibrary1.dll में मौजूद था। इसलिए विज़ुअल स्टूडियो से आवेदन को डीबग करने से पहले मैंने सी ++ अप्रबंधित असेंबली ( myUnmanagedFunctions.dll ) को myUnmanagedFunctions.dll की \bin\debug\ directory में प्रतिलिपि बनाई है ताकि यह सीएलआर द्वारा रन-टाइम पर लोड किया जा सके।

मुझे मिल रहा रखा

डीएलएल लोड करने में असमर्थ

घंटे के लिए त्रुटि बाद में मुझे एहसास हुआ कि ऐसे सभी असेंबल असेंबलियों को जो लोड किया जाना है, को स्टार्ट-अप प्रोजेक्ट ConsoleApplication1 की \bin\debug डायरेक्टरी में कॉपी करने की आवश्यकता होती है जो आमतौर पर एक जीत फ़ॉर्म, कंसोल या वेब एप्लिकेशन है

इसलिए कृपया सतर्क रहें, स्वीकृत उत्तर में Current Directory का मतलब वास्तव में मुख्य निष्पादन योग्य की Current Directory है जहां से आप आवेदन प्रक्रिया शुरू कर रहे हैं। एक स्पष्ट बात की तरह दिखता है लेकिन समय पर ऐसा नहीं हो सकता है

सबक सीखा – हमेशा एकमात्र डीएलएस को उसी निर्देशिका में रखें जहां स्टार्ट-अप एक्जीक्यूटेबल सुनिश्चित किया जा सकता है कि यह पाया जा सकता है।

फ्यूजन लॉगिंग चालू करें, इस सवाल को देखें कि यह कैसे करना है पर बहुत सारी सलाह है। मिश्रित-मोड ऐप लोड करने की समस्याओं को डीबग करना सही शाही दर्द हो सकता है। फ्यूजन लॉगिंग एक बड़ी मदद हो सकती है

सुनिश्चित करें कि आप Build Platform Target को x86 या x64 पर सेट करें ताकि यह आपके डीएलएल के साथ संगत हो – जो कि 32 बिट प्लेटफॉर्म के लिए संकलित हो सकता है।

यदि DLL और .NET प्रोजेक्ट्स एक ही समाधान में हैं और आप हर समय संकलन और चलाने के लिए चाहते हैं, तो आप .NET प्रोजेक्ट के गुणों को ठीक क्लिक कर सकते हैं, घटनाएं बनाएं, फिर पोस्ट-बिल्ड इवेंट के लिए निम्नलिखित की तरह कुछ जोड़ सकते हैं कमांड लाइन:

 copy $(SolutionDir)Debug\MyOwn.dll . 

यह मूल रूप से एक डॉस लाइन है, और आप अपने डीएलएल के लिए बनाया जा रहा है जहां पर आधारित tweak कर सकते हैं

जब मैं पीसी का परीक्षण करने के लिए अपने आवेदन को तैनात किया था तो मुझे एक ही समस्या थी। समस्या थी विकास पीसी msvcp110d.dll और msvcr110d.dll लेकिन परीक्षण पीसी नहीं।

मैंने "विजुअल स्टूडियो सी ++ 11.0 डीबग सीआरटी (x86)" को स्थापित किए गए मॉड्यूल में स्थापित किया है और यह काम किया है। आशा है कि यह किसी और के लिए मददगार होगा

सेटअप : 32-बिट विंडोज 7

संदर्भ : एक PCI-GPIB ड्रायवर स्थापित किया गया है जो कि मैंने पहले से जारी मुद्दे के कारण संवाद करने में असमर्थ था।

संक्षिप्त उत्तर : ड्राइवर को पुनर्स्थापित करें

लंबे उत्तर : मैंने भी निर्भरता वाकर का उपयोग किया, जिसने कई लापता निर्भरता मॉड्यूल को पहचान लिया। तुरंत, मैंने सोचा कि यह एक बोल्ड ड्राइवर स्थापना होनी चाहिए। मैं प्रत्येक लापता फ़ाइल की जांच और पुनर्स्थापित नहीं करना चाहता था।

तथ्य यह है कि मैं अनइंस्टालर को प्रोग्राम्स के अंतर्गत और नियंत्रण कक्ष की विशेषताओं को ढूंढने में असमर्थ था, खराब इंस्टॉलेशन का एक और सूचक है। मुझे मैन्युअल रूप से दो *। Dll in \ system32 मैन्युअल रूप से हटा दिया गया था और ड्राइवर पुन: स्थापना के लिए अनुमति देने के लिए रजिस्ट्री कुंजियाँ।

समस्या तय की गई

अप्रत्याशित भाग यह था कि सभी निर्भरता मॉड्यूल का समाधान नहीं किया गया था। फिर भी, *। Dll ब्याज का अब संदर्भित किया जा सकता है।

यह एक 'क्लॉज' है, लेकिन आप इसे कम से कम विवेक-परीक्षण के लिए इस्तेमाल कर सकते हैं: अपने कोड में डीएलएल के पथ को कठोर कोडिंग का प्रयास करें

 [DllImport(@"C:\\mycompany\\MyDLL.dll")] 

यह कहने के बाद; मेरे मामले में डंपबिन / डिपाण्डेंट्स चल रहे हैं, जैसा कि एंथनी-हैवेर्ड द्वारा सुझाए गए, और मेरी कार्यशील निर्देशिका में सूचीबद्ध DLL के 32-बिट संस्करणों की प्रतिलिपि बनाने के लिए इस समस्या को हल किया मेरे लिए

संदेश बस थोड़ा सा भ्रामक है, क्योंकि यह "मेरा" dll नहीं है जिसे लोड नहीं किया जा सकता है – यह निर्भरता है

मुझे लगता है कि आपके अप्रबंधित लाइब्रेरी को एक मेनिफेस्ट की आवश्यकता है
यहां बताया गया है कि इसे अपने द्विआधारी में कैसे जोड़ें और यहाँ क्यों है

संक्षेप में, कई पुन: वितरित लायब्रेरी संस्करण आपके बॉक्स में इंस्टॉल किए जा सकते हैं, लेकिन उनमें से केवल एक को आपके ऐप को संतुष्ट करना चाहिए, और यह डिफ़ॉल्ट नहीं हो सकता है, इसलिए आपको सिस्टम को अपनी लाइब्रेरी की आवृत्ति को बताने की ज़रूरत है, यही कारण है कि मैनिफेस्ट