2009-05-31 24 views
10

हालांकि मैं समझता हूं कि एक भाषा बाध्यकारी क्या है, मैं समझने के लिए संघर्ष कर रहा हूं कि वे कैसे काम करते हैं। क्या कोई बता सकता है कि आप WinAPI के लिए जावा बाध्यकारी कैसे बनाते हैं, उदाहरण के लिए?आप भाषा बाइंडिंग कैसे बनाते हैं?

उत्तर

8

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

कुछ भाषाएं एफएफआई शब्द का उपयोग नहीं करती हैं (हालांकि यह अच्छा होगा अगर उन्होंने किया)। जावा के लिए, इसे Java Native Interface, या जेएनआई कहा जाता है।

+0

धन्यवाद। मैं वास्तव में जेएनआई से अवगत था। लेकिन मुझे नहीं पता था कि मुझे और जानकारी के लिए कहां खोदना चाहिए। – qeek

1

भाषाएं (आमतौर पर) ने "मूल" कोड को कॉल करने के लिए वाक्यविन्यास परिभाषित किया है। तो यदि आपके पास लाइब्रेरी है जो निर्यात foo() निर्यात करती है, तो एक बाइडिंग बनाने का अर्थ यह होगा कि आप उदाहरण में जावा क्लास विधि foo() के साथ बनायेंगे। इस तरह, आप शेष कोड से MyBinding.foo() पर कॉल कर सकते हैं, इससे कोई फर्क नहीं पड़ता कि यह शुद्ध जावा विधि या संकलित सी कोड था।

फिर जावा के लिए, शायद आप JNI दस्तावेज़ीकरण देखना चाहते हैं। अन्य भाषाओं में समान तंत्र हैं। SIP जैसे टूल्स हैं जो सी (++) हेडर फाइलों का गुच्छा लेंगे, और इसके लिए पायथन बाइंडिंग का उत्पादन करेंगे। मुझे लगता है कि अन्य भाषाओं में भी इसी तरह के टूल्स हो सकते हैं।

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