मैं एक C++ लाइब्रेरी के लिए पाइथन रैपर बनाने के लिए SWIG 2.0 का उपयोग कर रहा हूं। एक विधि में "const std :: map &" प्रकार का तर्क है। SWIG खुशी से इसके लिए एक रैपर उत्पन्न करता है, लेकिन मैं समझ नहीं सकता कि विधि को कैसे बुलाया जाए। अगर मैं पास करता हूं, उदाहरण के लिए, उस तर्क के लिए {"a": "b"}, मुझे "NotImplementedError: गलत संख्या या अधिभारित फ़ंक्शन के लिए तर्कों का प्रकार" त्रुटि मिलती है।एसडब्ल्यूआईजी पाइथन में एक नक्शा <स्ट्रिंग, स्ट्रिंग> कैसे लपेटता है?
मैंने जेनरेट की गई .cxx फ़ाइल को आशा की उम्मीद में देखा कि यह स्पष्ट होगा, लेकिन ऐसा नहीं हुआ।
res4 = SWIG_ConvertPtr(obj3, &argp4, SWIGTYPE_p_std__mapT_std__string_std__string_t, 0 | 0);
if (!SWIG_IsOK(res4)) {
SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "new_Context" "', argument " "4"" of type '" "std::map< std::string,std::string > const &""'");
}
यह स्पष्ट रूप से जानता है कि तर्क मौजूद है, और यह कुछ है कि एक नक्शे में परिवर्तित हो जाता होना चाहिए है कि: यहाँ कोड है कि उस तर्क को संसाधित करता है। लेकिन मैं यह नहीं समझ सकता कि वास्तव में मुझे इसके लिए क्या करना है।
आप करने के लिए अपने बड़ा घूँट फ़ाइल में स्पष्ट रूप से नक्शे लपेट? मुझे लगता है कि आपको पाइथन कोड से सम्मिलित कॉल करके पॉप्युलेट के प्रकार का एक चर बनाने की आवश्यकता है। – mark