सी इंटरफ़ेस के पायथन कार्यान्वयन को मौजूदा सी प्रोग्राम में एकीकृत करना, जिससे पायथन कार्यान्वयन की अनुमति मिलती है बड़े कार्यक्रम के भीतर निर्बाध रूप से उपयोग किया जा सकता है।
इस पर विचार करें निम्नलिखित C इंटरफ़ेस परिभाषा:
class myif {
public:
virtual float myfunc(float a) = 0;
};
SWIG के साथ बहुरूपता सक्षम करें:
%module(directors="1") module %include "myif.h"
एक पायथन कार्यान्वयन बनाएं:
import module
class MyCl(module.myif):
def __init__(self):
module.myif.__init__(self)
def myfunc(self, a):
return a * 2.0
पाइथॉन को इनिशियलाइज़ करें (main.cc):
Py_Initialize();
पायथन मॉड्यूल आयात करें:
PyObject *module = PyImport_Import(PyString_FromString("mycl"));
इंस्टेंस बनाएं और फ़ंक्शन निष्पादित करें:
PyObject *instance = PyRun_String("mycl.MyCl()", Py_eval_input, dict, dict);
double ret = PyFloat_AsDouble(PyObject_CallMethod(instance, "myfunc", (char *)"(O)" ,PyFloat_FromDouble(input)));
अंतिमीकरण:
Py_Finalize();
एक्सपोज़िंग SWIG रनटाइम:
swig -Wall -c -python -external-runtime runtime.h
SWIG को पुनः संकलित करें मॉड्यूल:
g -DSWIG_TYPE_TABLE=myif -Wall -Wextra -shared -o _module.so myif_wrap.cxx -I/usr/include/python2.7 -lpython2.7
के लिए सहायक कार्य रूपांतरण:
myif *python2interface(PyObject *obj) {
...
}
int main() {
...
myif *inst = python2interface(instance);
std::cout myfunc(input) इन चरणों का पालन करके, कोई सी इंटरफ़ेस के पायथन कार्यान्वयन को सफलतापूर्वक कार्यान्वित कर सकता है और उन्हें बड़े सी कार्यक्रमों में सहजता से एकीकृत कर सकता है, जो अधिक लचीलापन और विस्तारशीलता प्रदान करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3