जो मैं करना चाहता हूं वह विपरीत है जो अधिकांश लोग करना चाहते हैं: मेरे पास पाइथन में लिखी गई लाइब्रेरी है, और मैं इसे सी (और संभवतः अन्य भाषाओं) में उपलब्ध करना चाहता हूं। ।एक पाइथन लाइब्रेरी को सी
मुझे पता है कि यह करने के लिए ठेठ जवाब सी के लिए अजगर पुस्तकालय उपयोग कर रहा है, वह यह है कि:
#include <Python.h>
int
main(int argc, char *argv[])
{
Py_Initialize();
PyRun_SimpleString("from time import time,ctime\n"
"print 'Today is',ctime(time())\n");
Py_Finalize();
return 0;
}
(स्रोत: http://docs.python.org/extending/embedding.html#very-high-level-embedding)
बहरहाल, यह मेरे लिए इष्टतम से भी कम समय लगता है:
- यह बदसूरत
- है यह सी ०१२३५१६४१०६१ के लिए सिर्फ है
मैं चाहता हूं कि, मेरी लाइब्रेरी को सीओ सहित मेरी लाइब्रेरी को बाध्य करने का एक तरीका है, मुझे स्वचालित रैपर पीढ़ी की परवाह नहीं है: मेरी लाइब्रेरी काफी सरल है, इसलिए मैं गोंद कोड लिख सकता हूं।
फिलहाल, एकमात्र समाधान जो मैंने ऊपर आया था, वह मेरे लाइब्रेरी को सी से बांधने के लिए ऊपर दिए गए कोड के समान कोड का उपयोग कर रहा है। फिर सी पुस्तकालय को अन्य भाषाओं में बांधने के लिए SWIG का उपयोग करें।
क्या कोई बेहतर है?
अच्छी तरह से, मुझे डेमॉन के रूप में चलने वाली लाइब्रेरी के रूप में कुछ भी कल्पना नहीं है (अब कम से कम नहीं)। तो मुझे लगता है कि मैं मैन्युअल रूप से एक सी लाइब्रेरी लिखूंगा जो पाइथन से जुड़ता है; तो मैं अन्य भाषाओं में एसडब्ल्यूआईजी का उपयोग कर बाइंडिंग कर दूंगा। – boyska