मेरे पास एक साझा लाइब्रेरी है जिसे 32-बिट के रूप में संकलित किया गया है। क्या मैं इसे 64-बिट एप्लिकेशन से उपयोग कर सकता हूं या क्या मुझे साझा लाइब्रेरी को 64-बिट के रूप में संकलित करने की आवश्यकता है?64-बिट अनुप्रयोग से 32-बिट साझा लाइब्रेरी लोड करें?
उत्तर
नहीं, आप पारंपरिक माध्यमों के माध्यम से 64-बिट अनुप्रयोग में 32-बिट लाइब्रेरी लोड नहीं कर सकते हैं।
वहाँ कुछ चालाक हैक्स हैं जैसे 32-बिट एप्लिकेशन जो लाइब्रेरी लोड करता है और आईपीसी इंटरफ़ेस के माध्यम से कार्यों को निर्यात करता है, लेकिन यदि आपके पास लाइब्रेरी को 64-बिट के रूप में संकलित करने का विकल्प है, तो वह है अब तक का सबसे अच्छा विकल्प है।
यह चालाक हैक आप अभी भी 32 बिट प्रक्रिया में डीएलएल लोड करता है। क्या आप इनमें से किसी भी हैक्स के बारे में जानते हैं जो 32 बिट डीएलएल को 64 बिट प्रक्रिया में लोड करता है? –
@ जॉन: कुछ भी नहीं जो काम करेगा। आप निश्चित रूप से अपनी प्रक्रिया में स्मृति आवंटित करने की तरह कुछ कर सकते हैं और 32-बिट डीएलएल से मैन्युअल रूप से बाइनरी कोड पढ़ सकते हैं। लेकिन प्रोसेसर इसे 64-बिट निर्देशों के रूप में पेश करेगा जो सही तरीके से काम नहीं करेगा। यह बस x86-64/x86 आर्किटेक्चर के साथ नहीं किया जा सकता है। –
आप 64-बिट अनुप्रयोग से 32-बिट लाइब्रेरी को गतिशील या स्थिर रूप से लोड नहीं कर सकते हैं या इसके विपरीत।
- आवेदन की एक 32-बिट संस्करण बनाने
- एक परिचय DLL की एक 64-बिट संस्करण बनाओ:
काम arounds के एक नंबर है कि मैं के बारे में पता कर रहा हूँ रहे हैं एक संचार मध्यस्थ के रूप में COM प्रॉक्सी ऑब्जेक्ट (जिसे सरोगेट भी कहा जाता है)। Described here।
- होस्ट एक अलग (32-बिट) EXE में DLL और एक भारतीय दंड संहिता तकनीक
का उपयोग अंतर संचार प्रक्रिया (आईपीसी) की तकनीक भी कर रहे हैं।
- नामित पाइप
- खिड़कियों messsages
- सॉकेट
- HTTP श्रोता
- WCF सेवा (described here)
- .NET remoting
+1, भले ही साझा स्मृति, साझा फ़ाइलें, डेटाबेस टेबल, आरएफसी, COM, और वीडियो स्क्रीन पोकिंग आईपीसी तकनीक सूची में गायब हैं;) दूसरे शब्दों में: मैं सुझाव देता हूं कि "कई इंटर-प्रोसेस संचार (आईपीसी) तकनीकें: "आप एक जोड़ते हैं" जिनमें से कुछ हैं: "वाक्यांश। – TheBlastOne
- 1. साझा लाइब्रेरी की कई प्रतियां लोड करें
- 2. साझा लाइब्रेरी से फ़ंक्शन कैसे कॉल करें?
- 3. रनटाइम पर पथ द्वारा साझा लाइब्रेरी लोड करें
- 4. 64 बिट अनुप्रयोग में 32 बिट डीएलएल लाइब्रेरी लोड करें
- 5. अपनी निर्भरताओं को लोड किए बिना साझा लाइब्रेरी कैसे लोड करें?
- 6. साझा लाइब्रेरी कन्स्ट्रक्टर
- 7. जार से लोड लाइब्रेरी
- 8. समस्या किसी साझा लाइब्रेरी
- 9. लिनक्स में अन्य साझा लाइब्रेरी के विरुद्ध साझा लाइब्रेरी को कैसे लिंक करें?
- 10. साझा लाइब्रेरी लोडिंग डीबग कैसे करें
- 11. साझा लाइब्रेरी नाम टकराव
- 12. गतिशील रूप से लोड की गई लाइब्रेरी
- 13. साझा लाइब्रेरी के दो उदाहरण लोड हो रहे हैं
- 14. एकाधिक मर्ज करें। इसलिए साझा लाइब्रेरी
- 15. एक साझा लाइब्रेरी में हेडर-केवल टेम्पलेट लाइब्रेरी संकलित करें?
- 16. एक साझा लाइब्रेरी में एक स्थिर लाइब्रेरी को कनवर्ट करें?
- 17. सी ++ साझा लाइब्रेरी सी
- 18. सी ++ से निष्पादन योग्य साझा लाइब्रेरी सूची कैसे प्राप्त करें?
- 19. साझा लाइब्रेरी मेमोरी स्पेस
- 20. ctypes एक साझा साझा लाइब्रेरी लोड कर रहा है जिसमें निर्भरता
- 21. मौजूदा ऑब्जेक्ट फ़ाइलों से साझा लाइब्रेरी बनाना
- 22. अजगर साझा लाइब्रेरी
- 23. लाइब्रेरी प्रोजेक्ट से अनुप्रयोग संसाधनों तक पहुंच
- 24. valgrind - साझा लाइब्रेरी में मेमोरी लीक पाएं
- 25. साझा करना .NET अनुप्रयोग पूल
- 26. प्रक्रियाओं को पुनरारंभ किए बिना साझा लाइब्रेरी अपडेट करें
- 27. साझा लाइब्रेरी में लाइब्रेरी फ़ंक्शंस का चुनिंदा स्टेटिक लिंकिंग
- 28. जावा: निर्भरता के साथ साझा लाइब्ररियस लोड
- 29. एक साझा लाइब्रेरी में एक साझा लाइब्रेरी को कनवर्ट करें (libsome.a से libsome.so बनाएं): मेरे प्रतीक कहां हैं?
- 30. साझा लाइब्रेरी की निर्भरता लिंकिंग
क्या ओएस: यहाँ कुछ उदाहरण हैं? यह शायद मायने रखता है। –
विंडोज 7 और रेड हैट लिनक्स। – Brian
@ पॉल: वास्तव में इससे कोई फर्क नहीं पड़ता। X86-64 मानते हुए, किसी दिए गए बिंदु पर प्रोसेसर या तो लंबे मोड (64-बिट), संरक्षित मोड (32-बिट), या वास्तविक मोड (16-बिट) में होता है। जब कोई धागा निर्धारित होता है, तो मोड उस प्रक्रिया से मेल खाने के लिए सेट होता है जो केवल उनमें से एक हो सकता है। यह एक बात है कि कैसे x86/x86-64 इसके मूल पर काम करता है। –