2013-01-04 27 views
9

मैं नहीं जानना चाहता कि विंडोज़ और लिनक्स में एपीआई फ़ंक्शंस के बीच एक-एक-एक समकक्ष है, न तो प्रत्येक एपीआई फ़ंक्शन को जानना चाहते हैं।लिनक्स में Win32 API के बराबर क्या होगा?

मैं सिर्फ दो बुनियादी बातों के लिए यह जानना चाहता हूँ:

  1. मुझे समझ में करना चाहते हैं क्यों क्यूटी मंच स्वतंत्र
  2. मैं पता है कि एपीआई मैं बंदरगाह के लिए एक आवेदन पत्र के साथ प्रोग्राम लिनक्स में उपयोग करना चाहिए चाहते है Win32 एपीआई, या Win32 एपीआई स्तर पर, दूसरे शब्दों में।

मुझे पता है कि यह व्यावहारिक नहीं है लेकिन मैं इस समकक्ष को जानना चाहता हूं।

+0

[मेन्सॉफ्ट] (http://www.mainsoft.com/content/mainsoft-unix-and-linux-overview) एक संभावना प्रदान करता है (यद्यपि, गंभीर कीमत पर)। –

+3

क्यूटी एक अमूर्त परत है। इसमें मंच विशिष्ट कार्यान्वयन हैं जो अंतर्निहित देशी संचालन के लिए क्यूटी आदेशों को मानचित्रित करते हैं। यह इस बात पर निर्भर करता है कि आप किस Win32 एपीआई कॉल को पोर्ट करना चाहते हैं। कुछ ऐसे खिड़कियां विशिष्ट हैं कि वे कहीं और काम करने की संभावना नहीं हैं। – Chriseyre2000

+2

Win32 जीयूआई तत्वों से लेकर 3 डी ग्राफिक्स तक सॉकेट मैनिप्ल्यूशन के लिए अर्ध-संबंधित पुस्तकालयों का एक विशाल सूट है। लिनक्स बहुत अधिक मॉड्यूलर है, और आप शायद अपनी परियोजना को पोर्ट करने में उपयोग करने के लिए कई पुस्तकालयों को चुनना और चुनना चाहते हैं। – meagar

उत्तर

11

आपको यह समझने की आवश्यकता है कि syscalls क्या हैं। लिनक्स पर, वे सबसे कम संभव user भूमि एपीआई हैं (इसके विपरीत Win32 API शायद कुछ पुस्तकालय कार्यों के साथ वास्तविक कर्नेल सिस्कोल मिश्रण करता है। libc लिनक्स पर भी ऐसा मिश्रण करता है)। fork(2), execve(2), open(2), pipe(2), mmap(2), read(2), poll(2), close(2), dup2(2), sigaction(2) महत्वपूर्ण syscalls हैं (लेकिन वहाँ के बारे में 300 उनमें से हैं)।

लिनक्स (और इसके विपरीत) पर प्रत्येक विंडोज कार्यक्षमता उपलब्ध होने की अपेक्षा न करें। इस तरह के बराबर के बारे में भी मत सोचो। लिनक्स पर एक अलग मानसिकता प्राप्त करें। (विशेष रूप से, processes लिनक्स और विंडोज़ पर बहुत अलग हैं)।

यह नहीं भूलें कि लिनक्स मुफ्त सॉफ्टवेयर है, और आप लिनक्स पर उपयोग किए जा रहे प्रत्येक फ़ंक्शन के स्रोत कोड में जा सकते हैं। इसे पढ़ें, इसे खोजें, इसे सुधारें .....

intro(2) मैन पेज पहले, और कई अन्य मैन पेज पढ़ें (विशेष रूप से syscalls(2), intro(3) आदि ...)। उदाहरण भी पढ़ें Advanced Linux Programming और Advanced Unix Programming

कुछ पुस्तकालय कारक आउट करने और पॉज़िक्स (जैसे लिनक्स) और विंडोज दोनों के लिए एक सामान्य अमूर्तता प्रदान करने का प्रयास करते हैं। विशेष रूप से Qt (और जीटीके)।

यदि आप ग्राफिकल इंटरफ़ेस के बारे में रुचि रखते हैं, तो X11 की महत्वपूर्ण भूमिका को समझें (ध्यान दें कि X11 सर्वर स्क्रीन & कीबोर्ड के नजदीक है; अधिकांश ग्राफिकल अनुप्रयोग X11 क्लाइंट हैं)। 2016 में, एक्स 11 को Wayland से हटा दिया जाना चाहिए (लेकिन आप यह नहीं देखेंगे कि कार्यान्वयन "विस्तार" - वास्तव में एक बड़ा - यदि आप क्यूटी या जीटीके के खिलाफ कोड करते हैं)

यदि आप केवल क्यूटी कॉल का उपयोग करके कोई एप्लिकेशन लिखते हैं (जिन्हें मानक सी ++ फ़ंक्शंस के अतिरिक्त लिनक्स या विंडोज के लिए विशिष्ट नहीं माना जाता है, यह लिनक्स से विंडोज तक पोर्टेबल स्रोत होना चाहिए और इसके विपरीत।

4

यदि आप Win32 कॉल का उपयोग करने वाले किसी एप्लिकेशन को पोर्ट करना चाहते हैं, तो आपकी सर्वश्रेष्ठ शर्त WineLib का उपयोग करने के लिए हो सकती है। यह वाइन को कम करने वाले पुस्तकालयों का उपयोग करता है, लेकिन यह शराब का उपयोग करके केवल एक एप्लिकेशन चलाने जैसा नहीं है - आप अपने एप्लिकेशन को लिनक्स एप्लिकेशन के रूप में फिर से संकलित करते हैं, केवल वाइनलिब साझा पुस्तकालयों का उपयोग करते हुए। यह तब भी एक विंडोज़ एप्लीकेशन की तरह दिखेगा, जब तक कि आप यूआई परत को संशोधित न करें।

जैसा कि उत्तर में कहीं और कहा गया है, लिनक्स में Win32 के बराबर कोई वास्तविक प्रत्यक्ष नहीं है - Win32 के विभिन्न बिट्स विभिन्न घटकों द्वारा प्रदान किए जाते हैं, और कभी-कभी आपको घटकों का विकल्प मिल जाता है। यह संभव है क्योंकि Win32 के कुछ समकक्षों को निचले स्तर पर मूल रूप से कार्यान्वित किया जाता है - उदाहरण के लिए, Win32 UI घटक प्रदान करता है, समकक्ष जो जीटीके, क्यूटी या अन्य टूलकिट्स (जैसे वाइनलिब) में उपलब्ध हैं, जो स्वयं एक्स के साथ बातचीत करें। जैसे कि आप आमतौर पर निचले स्तर के एपीआई कॉल का उपयोग करके स्वयं को ड्राइंग करने के बजाय Win32 से घटक का उपयोग करेंगे, इसलिए आप आमतौर पर एक्स का उपयोग करने के बजाय अपने उच्च स्तरीय UI टूलकिट से घटकों का उपयोग करेंगे।