2011-10-07 17 views
6

दोनों के लिए संकलन करना क्या इस तरह से कंपाइलर को स्थापित करना संभव है ताकि यह एक्जिक्यूटिव/डीएलएल दोनों x86 और x64 दोनों के लिए संकलित हो सके? मेरा मतलब है, एक प्लेटफॉर्म दोनों के लिए उपयुक्त एक फ़ाइल।दोनों x86 और x64

मुझे केवल प्लेटफार्मों को अलग से चुनने का तरीका पता है, लेकिन मैं दोनों चाहता हूं।

क्या यह संभव है?

उत्तर

19

x86 निष्पादन योग्य x64 होस्ट पर पूरी तरह से समर्थित है। जैसे 32-बिट मोड में संकलित कोई भी EXE 32-बिट और 64-बिट होस्ट पर किसी भी समस्या के बिना चलाएगा। यदि आपको नहीं पता कि आपको 64-बिट निष्पादन योग्य क्यों चाहिए, तो शायद आप नहीं करते हैं, इसलिए केवल 32-बिट निष्पादन योग्य पर्याप्त होगा।

हालांकि, डीएलएल के साथ यह एक अलग मामला है। डीएलएल का आर्किटेक्चर (32-बिट या 64-बिट) निष्पादन योग्य से मेल खाता है जहां डीएलएल का उपयोग किया जा रहा है। जैसे यदि आप x64 विंडोज के लिए एक्सप्लोरर एक्सटेंशन लिख रहे हैं, तो explorer.exe 64-बिट होने जा रहा है, इसलिए आपका डीएलएल 64-बिट भी होना चाहिए, अन्यथा इसे लोड नहीं किया जा सकता है।

विंडोज पर एक डीएलएल या EXE में दो अलग-अलग आर्किटेक्चर को गठबंधन करने का कोई तरीका नहीं है। इसलिए यदि आपको 32-बिट और 64-बिट होस्ट दोनों का समर्थन करने की आवश्यकता है तो आपको दो डीएलएल की आवश्यकता होगी।

+0

32-बिट और 64-बिट को एक निष्पादन योग्य में संयोजित करने के लिए आप 32-बिट स्वयं-निकालने वाले के साथ ऐसा कर सकते हैं जो प्लेटफ़ॉर्म का पता लगाएगा और वर्तमान प्लेटफ़ॉर्म के लिए सही EXE निकालें/चलाएगा। हालांकि, इसका दो निष्पादन योग्यों पर कोई वास्तविक लाभ नहीं होगा। –

+6

@haimg: 32-बिट EXE केवल 64-बिट विंडोज सिस्टम पर चल सकता है यदि WOW64 घटक स्थापित है। 64-बिट विंडोज संस्करणों में, WOW64 एक आवश्यक घटक था, लेकिन विंडोज सर्वर 2008 आर 2 में शुरू हुआ, WOW64 अब वैकल्पिक है इसलिए यह स्थापित हो सकता है या नहीं भी हो सकता है। –

+0

@ रेमीलेबेउ-टीमबी: मान्य बिंदु। हालांकि, क्या आपने कभी WOW64 अनइंस्टॉल किए गए वास्तविक उत्पादन सिस्टम को देखा है? मैं कल्पना नहीं कर सकता कि एम्बेडेड सिस्टम के दायरे से बाहर ... – haimg

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