2011-04-19 11 views
13

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

+1

क्या ओएस: यहाँ कुछ उदाहरण हैं? यह शायद मायने रखता है। –

+0

विंडोज 7 और रेड हैट लिनक्स। – Brian

+1

@ पॉल: वास्तव में इससे कोई फर्क नहीं पड़ता। X86-64 मानते हुए, किसी दिए गए बिंदु पर प्रोसेसर या तो लंबे मोड (64-बिट), संरक्षित मोड (32-बिट), या वास्तविक मोड (16-बिट) में होता है। जब कोई धागा निर्धारित होता है, तो मोड उस प्रक्रिया से मेल खाने के लिए सेट होता है जो केवल उनमें से एक हो सकता है। यह एक बात है कि कैसे x86/x86-64 इसके मूल पर काम करता है। –

उत्तर

13

नहीं, आप पारंपरिक माध्यमों के माध्यम से 64-बिट अनुप्रयोग में 32-बिट लाइब्रेरी लोड नहीं कर सकते हैं।

वहाँ कुछ चालाक हैक्स हैं जैसे 32-बिट एप्लिकेशन जो लाइब्रेरी लोड करता है और आईपीसी इंटरफ़ेस के माध्यम से कार्यों को निर्यात करता है, लेकिन यदि आपके पास लाइब्रेरी को 64-बिट के रूप में संकलित करने का विकल्प है, तो वह है अब तक का सबसे अच्छा विकल्प है।

+0

यह चालाक हैक आप अभी भी 32 बिट प्रक्रिया में डीएलएल लोड करता है। क्या आप इनमें से किसी भी हैक्स के बारे में जानते हैं जो 32 बिट डीएलएल को 64 बिट प्रक्रिया में लोड करता है? –

+1

@ जॉन: कुछ भी नहीं जो काम करेगा। आप निश्चित रूप से अपनी प्रक्रिया में स्मृति आवंटित करने की तरह कुछ कर सकते हैं और 32-बिट डीएलएल से मैन्युअल रूप से बाइनरी कोड पढ़ सकते हैं। लेकिन प्रोसेसर इसे 64-बिट निर्देशों के रूप में पेश करेगा जो सही तरीके से काम नहीं करेगा। यह बस x86-64/x86 आर्किटेक्चर के साथ नहीं किया जा सकता है। –

5

आप 64-बिट अनुप्रयोग से 32-बिट लाइब्रेरी को गतिशील या स्थिर रूप से लोड नहीं कर सकते हैं या इसके विपरीत।

  1. आवेदन की एक 32-बिट संस्करण बनाने
  2. एक परिचय DLL की एक 64-बिट संस्करण बनाओ:

    काम arounds के एक नंबर है कि मैं के बारे में पता कर रहा हूँ रहे हैं एक संचार मध्यस्थ के रूप में COM प्रॉक्सी ऑब्जेक्ट (जिसे सरोगेट भी कहा जाता है)। Described here

  3. होस्ट एक अलग (32-बिट) EXE में DLL और एक भारतीय दंड संहिता तकनीक

का उपयोग अंतर संचार प्रक्रिया (आईपीसी) की तकनीक भी कर रहे हैं।

  • नामित पाइप
  • खिड़कियों messsages
  • सॉकेट
  • HTTP श्रोता
  • WCF सेवा (described here)
  • .NET remoting
+2

+1, भले ही साझा स्मृति, साझा फ़ाइलें, डेटाबेस टेबल, आरएफसी, COM, और वीडियो स्क्रीन पोकिंग आईपीसी तकनीक सूची में गायब हैं;) दूसरे शब्दों में: मैं सुझाव देता हूं कि "कई इंटर-प्रोसेस संचार (आईपीसी) तकनीकें: "आप एक जोड़ते हैं" जिनमें से कुछ हैं: "वाक्यांश। – TheBlastOne

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