2010-02-15 9 views
28

क्या 32 बिट डीएलएल लाइब्रेरी लोड करने का कोई तरीका है (लोड लाइब्रेरी के समान उपयोग के साथ कुछ) मैं GetProcAddress के साथ उस फ़ंक्शन का उपयोग करना चाहता हूं।64 बिट अनुप्रयोग में 32 बिट डीएलएल लाइब्रेरी लोड करें

मैंने वाह को देखा, लेकिन यह कार्यक्षमता प्रदान नहीं करता है। कार्यक्षमता मौजूद होना चाहिए, क्योंकि निर्भरता वाल्कर जैसे उपकरण 64 बिट डीएल के प्रतीक को पढ़ने में सक्षम हैं, भले ही इसकी 64 बिट्स हों।

धन्यवाद

+0

यह उत्तर दिया गया है: http://stackoverflow.com/questions/128445/calling-32bit-code-from-64bit-process। नीचे जॉन नोवेलर का जवाब भी सही है। –

+0

https://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/ – Ampere

+0

@ जॉन बी लैम्बे इस पोस्ट का शीर्षक आप की तुलना में स्पष्ट है उन लोगों के लिए जुड़ा हुआ है जो exe-call-dll चीज़ खोज रहे हैं। – ebk

उत्तर

40

क्षमा करें, लेकिन आप एक 64 बिट प्रक्रिया में केवल 32 बिट डीएलएल लोड कर सकते हैं जब आप डेटाफाइल के रूप में डीएल लोड कर रहे हों। आप कोड निष्पादित नहीं कर सकते हैं। http://support.microsoft.com/kb/282423

माइक्रोसॉफ्ट अनुशंसा करता है कि 64 बिट एप्लिकेशन के साथ 32 बिट कोड का उपयोग करने के लिए आप इंटरप्रोसेस COM का उपयोग करें। प्रक्रिया http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/ प्रक्रिया को समझाते हुए एक लेख यहां मजेदार नहीं है।

+0

आलेख के लिए अद्यतन लिंक: http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/ यह भी देखें http://stackoverflow.com/questions/128,445/कॉल करने वाले 32 बिट-कोड-से-64 बिट-प्रक्रिया –

2

वहाँ एक 32 बिट निष्पादन योग्य पढ़ रहे हैं और एक 32 बिट निष्पादन के भीतर कोड को क्रियान्वित करने के बीच एक अंतर है। मुझे विश्वास नहीं है कि विंडोज़ ऐसा करने के लिए कोई कार्यक्षमता प्रदान करता है।

एकमात्र तरीका जो आप करने में सक्षम होने की संभावना है, वह 32 बिट प्रक्रिया बनाने के लिए है जो डीएल लोड करता है और फिर दो प्रक्रियाओं के बीच परिणामों को पारित करने के लिए इंटरप्रोसेस संचार करता है।

0

तो तुम सब करने की इच्छुक रहे हैं इसे से संसाधनों मिलता है, तो आप एक datafile के रूप में लोड कर सकते हैं:

LoadLibraryEx(exeName, NULL, LOAD_LIBRARY_AS_DATAFILE); 

फिर FindResource सामान्य रूप में कहते हैं।

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