2011-12-28 13 views
8

के माध्यम से एक 64-बिट प्रक्रिया में एक 32-बिट DLL का उपयोग तो कुछ समय पहले मैं एक मुद्दा है कि मुझे पता था कि जल्द ही आ रहा है की जाएगी जांच कर रहा था। हमारे पास एक डीएलएल है जो एक निश्चित पुस्तकालय के 32-बिट संस्करणों से जुड़ा हुआ है। इस पुस्तकालय का कोई भी x64 संस्करण हमारे लिए उपलब्ध नहीं है और हमारे पास इसे बदलने के संबंध में कोई व्यावहारिक विकल्प नहीं है।कॉम

जब मैं वैसे तो यह मैं एक लेख या दो एक तरीका है जिसके द्वारा एक 64-बिट प्रक्रिया एक कॉम "सर्वर" के माध्यम से एक 32-बिट DLL (विंडोज़) का उपयोग कर सकते का वर्णन पाया प्रदर्शन किया। दुर्भाग्यवश मैंने उन लिंक को खो दिया जिन्हें मैंने बचाया था और अब मैं बिना किसी किस्मत के एक घंटे से अधिक समय से खोज कर रहा हूं।

यहाँ किसी को भी इस प्रक्रिया मैं का वर्णन कर रहा हूँ से परिचित है? मैं अपने जीवन के लिए याद नहीं कर सकता कि मैं किस जादुई incantation का उपयोग खोज में सही परिणाम खींचने के लिए करता था और, ज़ाहिर है, अब यह कार्यान्वयन का समय है। आप जो भी मदद कर सकते हैं, उसके लिए अग्रिम धन्यवाद, मैं इस दौरान खोज जारी रखूंगा।

+0

मैं आप अपने लिंक "कॉम सरोगेट मदर" और "googling द्वारा वापस पा सकते हैं लगता है COM + होस्टिंग "। –

+0

@ हंसपैसेंट: यही वह शब्द था जिसकी मुझे आवश्यकता थी। धन्यवाद। –

+0

(अधिकतर लोग उत्तर पर ठोकर खा रहे हैं) ध्यान रखें कि ऐसा करने में इंटरप्रोसेस डेटा मार्शलिंग शामिल है, जो महंगा हो सकता है - यह एक चांदी की गोली नहीं है जो स्वचालित रूप से * सभी * समस्याओं को हल करती है। – snemarch

उत्तर

5

यह पर्याप्त नहीं हो सकता है, लेकिन यह आपको मिल शुरू कर दिया हो सकता है: Process Interoperability

पर 64-बिट Windows, एक बाहर के प्रक्रिया 32-बिट COM सर्वर एक 64-बिट ग्राहक के साथ संवाद कर सकते हैं, और आउट-ऑफ-प्रोसेस 64-बिट COM सर्वर 32-बिट क्लाइंट के साथ संवाद कर सकता है। इसलिए, यदि आपके पास 32-बिट डीएलएल है जो COM-aware नहीं है, तो आप इसे आउट-ऑफ-प्रोसेस COM सर्वर में लपेट सकते हैं और 64-बिट प्रक्रिया से और उससे मार्शल कॉल पर COM का उपयोग कर सकते हैं। यदि आप 32-बिट DLLs कि आप फिर से लिखना नहीं कर सकते

और Accessing 32-bit DLLs from 64-bit code

64-बिट मशीन के लिए अपने 32-बिट विंडोज़ अनुप्रयोग प्रवास के समस्याग्रस्त किया जा सकता है। माइक बेकर कैसे आप उपयोग कर 64-बिट कोड से 32-बिट DLLs उपयोग कर सकते हैं आप से पता चलता निर्मित आईपीसी तंत्र ...

+0

और यही वह लिंक था जिसे मैं खोज रहा था। धन्यवाद महोदय। –

+0

आपका स्वागत है। जब मुझे इसकी ज़रूरत है तो मेरे पास दूसरा लिंक बुकमार्क किया गया है :) – crashmstr

3

Client of Out-of-process Local Server प्रक्रिया से बाहर एक कॉम चलाने का एक उदाहरण है। यदि आप कॉम सर्वर को संसाधित कर रहे हैं तो आपका क्लाइंट 64 बिट और सर्वर 32 बिट हो सकता है।

1

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

नीचे ब्लॉक आरेख मूल बातें बताते हैं

जानकारी के लिए इस लिंक पर एक नज़र डालें:

http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/#more-355

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