मैं इसे वास्तव में क्या वर्णन किया गया है here क्या करना चाहते हैं, लेकिन उसे स्वीकार समाधान मेरे लिए काम नहीं करता है में एक ही DLL के 2 संस्करण। मुझे लगता है कि कारण here समझाया गया है:लोड एक ही प्रक्रिया
निर्भरता के साथ एक DLL एक पूर्ण पथ, सिस्टम DLL के आश्रित DLLs के लिए खोज के रूप में यदि वे अपने मॉड्यूल नाम के साथ लोड किया गया निर्दिष्ट द्वारा भरी हुई है तो।
एक ही मॉड्यूल नाम के साथ एक DLL पहले से ही स्मृति में, केवल चेकों पुनर्निर्देशन के लिए भरी हुई है प्रणाली और एक प्रकट लोड DLL को हल करने, कोई फर्क नहीं पड़ता जो निर्देशिका उस में है पहले। प्रणाली करता है डीएलएल के लिए खोजें नहीं।
मैं निम्नलिखित संरचना में अपना आवेदन करना चाहता हूं।
c:\Exe
|
|----- c:\DLL\DLL.dll, c:\DLL\common.dll
|
|----- c:\DLL2\DLL2.dll, c:\DLL2\common.dll
मेरे EXE परोक्ष दोनों ही मामलों में लोड किया जाता है के माध्यम से
LoadLibrary("c:\\DLL\\DLL.dll");
LoadLibraryEx("c:\\DLL2\\DLL2.dll");
आम DLLs लोड होगा।
मैं SetDllDirectory विकल्प की कोशिश की, लेकिन वहाँ हमेशा सिर्फ एक ही common.dll भरी हुई है।
मैं common.dll में संस्करण जानकारी गयी। c: \ DLL \ common.dll में संस्करण 2.0.1.0 है जबकि c: \ DLL2 \ DLL2.dll संस्करण 4.0.1.0
मैंने निम्न संस्करण को संबंधित संस्करण जानकारी के साथ एम्बेड किया है, लेकिन इससे मदद नहीं मिली।
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="common" version="4.0.1.0" processorArchitecture="x86"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
क्या इस समस्या का समाधान है?
धन्यवाद। मैंने डीएलएल में प्रकटताओं को एम्बेड किया। तो, ऐसा लगता है कि मैंने जो किया है वह मैंने किया था। या क्या मुझे कुछ याद आ रही है? क्या मैनिफेस्ट सही है? – PeeWee2201
मैंने विधि 1 पर कुछ स्पष्टीकरण जोड़ा। –
धन्यवाद। मुझे यह काम मिल गया। मुझे विंडोज 7 पर स्विच करना था और यह देखने के लिए एसएक्सएसट्रेस टूल का उपयोग करना था कि क्या हो रहा है। एक बार यह स्थापित हो जाने के बाद, यह काफी आसान है, लेकिन उपकरण के बिना आपके पास गलत क्या है पर कोई दृश्यता नहीं है – PeeWee2201