/ / मैं 64 बिट अजगर में 32 बिट dll या exe का उपयोग कर सकता हूं? - अजगर, डीएल, 32 बिट -64 बिट

क्या मैं 64 बिट पायथन में 32 बिट डीएल या एक्सई का उपयोग कर सकता हूं? - पायथन, डीएलएल, 32 बिट -64 बिट

जब मैं 32 बिट अजगर में 32 बिट डीएल को कॉल करने के लिए सीडीएलएल का उपयोग करता हूं, तो यह अच्छी तरह से काम करता है। लेकिन मेरे 64 बिट win7 ओएस में unfortunatelly केवल 64 बिट अजगर स्थापित करता है, जब कॉलिंग मुड़ता है: यह एक प्रभावी win32 ऐप नहीं है!

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

उत्तर:

उत्तर № 1 के लिए 25

64-बिट EXE 32-बिट DLL लोड नहीं कर सकते हैं। (और इसके विपरीत: 32-बिट EXE 64-बिट DLL को लोड नहीं कर सकता है।) आखिरकार, वे "एक पॉइंटर के आकार पर सहमत नहीं हो सकते हैं - यदि EXE ने 4GB सीमा से ऊपर की मेमोरी को आवंटित किया है और उसे पास करना चाहता है 32-बिट DLL के लिए सूचक?

आपको "या तो करना होगा:

  1. अपने DLL का 64-बिट संस्करण बनाएं;
  2. पायथन के 32-बिट संस्करण का उपयोग करें; या
  3. DLL को एक अलग (32-बिट) EXE में होस्ट करें, और अपनी 64-बिट पायथन प्रक्रिया से बात करने के लिए इंटर-प्रोसेस संचार के कुछ रूप का उपयोग करें।