आप अन्य उत्तरों द्वारा बताए गए अनुसार जेआईटी संकलन को लागू करने के लिए लाइब्रेरी के रूप में क्लैंग का उपयोग कर सकते हैं। फिर, आपको संकलित मॉड्यूल को लोड करना होगा (कहें, एक .so लाइब्रेरी)।
इसे पूरा करने के लिए, आप इसे लोड करने के लिए मानक डलोपेन (यूनिक्स) या लोड लाइब्रेरी (विंडोज़) का उपयोग कर सकते हैं, फिर डायलिसिम (यूनिक्स) का उपयोग गतिशील रूप से संकलित कार्यों के संदर्भ में करें, "स्क्रिप्ट" मुख्य() - जैसे फ़ंक्शन कहें जिसका नाम ज्ञात है। ध्यान दें कि सी ++ के लिए आपको उलझन वाले प्रतीकों का उपयोग करना होगा। एक पोर्टेबल विकल्प उदा। जीएनयू का libltdl।
वैकल्पिक रूप से, "स्क्रिप्ट" मॉड्यूल इनिट फ़ंक्शंस को कार्यान्वित करके या कुछ स्थैतिक कोड डालने के द्वारा लोड समय पर स्वचालित रूप से चलाया जा सकता है (सी ++ वैश्विक रूप से परिभाषित ऑब्जेक्ट का कन्स्ट्रक्टर तुरंत कहा जाएगा)।
भारित मॉड्यूल सीधे मुख्य एप्लिकेशन में कुछ भी कॉल कर सकता है। निश्चित रूप से प्रतीकों को उचित मुख्य ऐप की शीर्षलेख फ़ाइलों का उपयोग करके संकलन समय पर जाना जाता है।
यदि आप आसानी से अपने प्रोग्राम में सी ++ "प्लगइन्स" जोड़ना चाहते हैं, और घटक इंटरफेस को प्राथमिकता से जानते हैं (कहें कि आपका मुख्य एप्लिकेशन मॉड्यूल में लोड होने से पहले लोड किए गए वर्ग का नाम और इंटरफेस जानता है।), आपके द्वारा लाइब्रेरी को गतिशील रूप से लोड करने के बाद कक्षा का उपयोग करने के लिए उपलब्ध है जैसे कि यह स्थिर रूप से जुड़ा हुआ था। बस सुनिश्चित करें कि आप अपने मॉड्यूल को dlopen() से पहले क्लास ऑब्जेक्ट को तुरंत चालू करने का प्रयास नहीं करते हैं।
स्थिर कोड का उपयोग करके अच्छी स्वचालित प्लगइन पंजीकरण तंत्र को भी लागू करने की अनुमति मिलती है।
धन्यवाद। इसे उठाने और चलाने के लिए मुझे थोड़ी देर लग गई - मूल रूप से क्योंकि मुझे निष्पादन योग्य नहीं मिला :) अब इसे देखने के बाद मैं कहूंगा कि यह आधा रास्ता है। अब मुझे यह पता लगाने की जरूरत है कि गैर-जूट वाले भाग में परिभाषित कार्यों को कैसे कॉल करें। ... इसके बारे में कोई विचार? – FFox
मुझे यकीन नहीं है कि आपका क्या मतलब है। आपको संकलित किए गए किसी भी फ़ंक्शन के लिए पॉइंटर प्राप्त करने में सक्षम होना चाहिए। शायद यह सामान्य एलएलवीएम ट्यूटोरियल उपयोगी होगा: http://llvm.org/docs/tutorial/ (अध्याय 4, विशेष रूप से)। मुझे उम्मीद नहीं है कि आप इस दुभाषिया का उपयोग करने में सक्षम होंगे, लेकिन यह आपको अपने आवेदन में सी/सी ++ दुभाषिया को एम्बेड करने का विचार देना चाहिए। (मैंने इसे स्वयं भी इस्तेमाल नहीं किया है; मुझे बस इसे देखकर याद आया।) –
ठीक है, मैंने यह किया है: http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-July/009836.html ... और यह वास्तव में सीएफ-देव मेलिंग सूची से अच्छे लोगों की मदद से काम किया। आपको क्यों लगता है कि इस दुभाषिया को ऐप में उपयोग नहीं किया जा सकता है? – FFox