पर्ल से सी तक कॉल करने के लिए आम तौर पर एक साझा, स्थिर नहीं, उसके सी कोड से लाइब्रेरी को संकलित करता है, और उसके बाद XSLoader
या DynaLoader
मॉड्यूल का उपयोग करके पर्ल दुभाषिया में लोड करता है।
तब पीएलएल स्पेस से सी कोड को कॉल करने में सक्षम होने के कई तरीके हैं। सबसे आम बात XSUB
एस नामक कुछ लिख रही है, जिसमें एक पर्ल-साइड इंटरफेस है, सी कॉलिंग-कॉन्वेंटेंस के लिए पर्ल कॉलिंग-कॉन्वेंटेंस को मैप करें, और सी फ़ंक्शंस को कॉल करें। वे XSUBs आमतौर पर साझा लाइब्रेरी में भी जुड़े होते हैं जिन्हें पर्ल में लोड किया जाएगा, और एक्सएस नामक एक भाषा में लिखा जाएगा, जिसे व्यापक रूप से perlxs और perlxstut में दस्तावेज किया गया है।
उस रैपर परत को बनाने के अन्य तरीके भी हैं, जैसे विभिन्न एक्सएस कोड जनरेटर, साथ ही साथ SWIG। लेकिन आप सीधे NCI
का उपयोग कर सी कार्यों को भी कॉल कर सकते हैं। पर्ल में भी उनमें से कई हैं। P5NCI
उन लोगों का एक उदाहरण है, इस साल के Google ग्रीष्मकालीन कोड कार्यक्रम में विकसित सीटीपीएस मॉड्यूल एक और है।
शायद एक और संबंधित तकनीक जिसका उल्लेख यहां किया जाना चाहिए Inline::C
, और इनलाइन परिवार के अन्य मॉड्यूल हैं। वे आपको सीधे अन्य भाषाओं में कोड लिखने की अनुमति देते हैं, और इसे कॉल करते हैं। हुड इनलाइन :: सी के तहत बस एक्सएस कोड बनाता है और इसका परिणाम दुभाषिया में लोड करता है।
[मैं पर्ल में .a लाइब्रेरी फ़ाइलों को कैसे एक्सेस कर सकता हूं?] (Http: // stackoverflow।कॉम/क्यू/3733346) – daxim
यदि आप सिर्फ कुछ सी कोड को पर्ल से चलाना चाहते हैं, तो इसे एक स्टैंडअलोन सी प्रोग्राम के रूप में संकलित करना और इसे कमांड लाइन पर कॉल करना काम कर सकता है :) या शायद गियरमैन की तरह कुछ उपयोगी हो सकता है .. –