"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > मैं कार्यान्वयन के लिए C++ इंटरफ़ेस को Python में कैसे प्रदर्शित कर सकता हूं?

मैं कार्यान्वयन के लिए C++ इंटरफ़ेस को Python में कैसे प्रदर्शित कर सकता हूं?

2024-11-19 को प्रकाशित
ब्राउज़ करें:343

How can I expose a C   interface to Python for implementation?

कार्यान्वयन के लिए पायथन में सी इंटरफ़ेस को उजागर करना

उद्देश्य

सी इंटरफ़ेस के पायथन कार्यान्वयन को मौजूदा सी प्रोग्राम में एकीकृत करना, जिससे पायथन कार्यान्वयन की अनुमति मिलती है बड़े कार्यक्रम के भीतर निर्बाध रूप से उपयोग किया जा सकता है।

इंटरफ़ेस परिभाषा

इस पर विचार करें निम्नलिखित C इंटरफ़ेस परिभाषा:

class myif {
public:
  virtual float myfunc(float a) = 0;
};

पायथन में इंटरफ़ेस का आयात और विस्तार

  1. SWIG के साथ बहुरूपता सक्षम करें:

    %module(directors="1") module
    
    %include "myif.h"
  2. एक पायथन कार्यान्वयन बनाएं:

    import module
    
    class MyCl(module.myif):
      def __init__(self):
        module.myif.__init__(self)
      def myfunc(self, a):
        return a * 2.0

सी में पायथन को एंबेड करना

  1. पाइथॉन को इनिशियलाइज़ करें (main.cc):

    Py_Initialize();
  2. पायथन मॉड्यूल आयात करें:

    PyObject *module = PyImport_Import(PyString_FromString("mycl"));
  3. इंस्टेंस बनाएं और फ़ंक्शन निष्पादित करें:

    PyObject *instance = PyRun_String("mycl.MyCl()", Py_eval_input, dict, dict);
    double ret = PyFloat_AsDouble(PyObject_CallMethod(instance, "myfunc", (char *)"(O)" ,PyFloat_FromDouble(input)));
  4. अंतिमीकरण:

    Py_Finalize();

पायथन ऑब्जेक्ट को सी में कनवर्ट करना सूचक

  1. एक्सपोज़िंग SWIG रनटाइम:

    swig -Wall -c   -python -external-runtime runtime.h
  2. SWIG को पुनः संकलित करें मॉड्यूल:

    g   -DSWIG_TYPE_TABLE=myif -Wall -Wextra -shared -o _module.so myif_wrap.cxx -I/usr/include/python2.7 -lpython2.7
  3. के लिए सहायक कार्य रूपांतरण:

    myif *python2interface(PyObject *obj) {
      ...
    }

main.cc में अंतिम कार्यान्वयन

int main() {
  ...
  myif *inst = python2interface(instance);
  std::cout myfunc(input) 

इन चरणों का पालन करके, कोई सी इंटरफ़ेस के पायथन कार्यान्वयन को सफलतापूर्वक कार्यान्वित कर सकता है और उन्हें बड़े सी कार्यक्रमों में सहजता से एकीकृत कर सकता है, जो अधिक लचीलापन और विस्तारशीलता प्रदान करता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3