मैं स्विग का उपयोग करने में बिल्कुल नया हूं, इसलिए अगर यह आसान लगता है तो मुझे क्षमा करें।

मैं C++ में एक वर्ग के लिए एक इंटरफ़ेस लिखना चाहता हूं जो डबल वेक्टर प्राप्त करता है और वापस करता है:

/*  example.h file */
#include <iostream>
#include <cstdio>
#include <vector>

class my_class 
{
    private:    
        int N;
    public:
        my_class(){ }
        std::vector<double> half(const std::vector<double>& ); 
};

/* example.cpp  file */
#include "example.h"

std::vector<double> my_class::half(const std::vector<double>& v) {
    std::vector<double> w(v);
    for (unsigned int i=0; i<w.size(); i++)
        w[i] /= 2.0;
    return w;
}

और example.i इंटरफ़ेस फ़ाइल

%module example

%{
#define SWIG_FILE_WITH_INIT
#include "example.h"
%}

%include "std_vector.i"

namespace std {
    %template(DoubleVector)  vector<double>;
}


#include "example.h"

तब मैंने अजगर में मॉड्यूल का उपयोग करने की कोशिश की:

import example
A = example.my_class()

AttributeError                            Traceback (most recent call last)
<ipython-input-5-d2af384d4adf> in <module>()
----> 1 example.my_class()

AttributeError: 'module' object has no attribute 'my_class'

किसी भी गाइड या टिप्पणी के लिए धन्यवाद।

0
Abolfazl 23 सितंबर 2017, 10:41

1 उत्तर

सबसे बढ़िया उत्तर

example.i में अंतिम पंक्ति %include "example.h" होनी चाहिए न कि #include "example.h"

0
Mark Tolonen 23 सितंबर 2017, 20:53