2012-02-03 12 views
17

के रूप में लेने वाले विधियों के साथ SWIG का उपयोग करके मैंने अपनी सी ++ कक्षा को लपेटने के लिए SWIG का उपयोग किया। कुछ तरीकों में पैरामीटर के रूप में const std::string& है। एसडब्ल्यूआईजी SWIGTYPE_p_std__string नामक एक प्रकार बनाता है हालांकि सी # में विधि का आह्वान करते समय आप इसके लिए सामान्य स्ट्रिंग पास नहीं कर सकते हैं।स्प्रिंग :: स्ट्रिंग को पैरामीटर

/* File : example.i */ 
%module example 

%{ 
#include "example.h" 
%} 

/* Let's just grab the original header file here */ 
%include "example.h" 

और विधि है कि सी ++ में लिपटे किया जा रहा है: नीचे दिए गए उदाहरण सिर्फ एक संशोधित उदाहरण है कि बड़ा घूँट पैकेज .:

public void setName(SWIGTYPE_p_std__string name) 
{ 
    examplePINVOKE.Shape_setName(swigCPtr, SWIGTYPE_p_std__string.getCPtr(name)); 
    if (examplePINVOKE.SWIGPendingException.Pending) throw examplePINVOKE.SWIGPendingException.Retrieve(); 
} 

के साथ आता है मेरी इंटरफ़ेस फ़ाइल में मैं सिर्फ है

void Shape::setName(const std::string& name) 
{ 
    mName = name; 
} 

क्या इंटरफ़ेस फ़ाइल में मुझे कुछ प्रकार का टाइपमैप रखना है? अगर ऐसा है, तो मैं वह कैसे करू?

उत्तर

21

जब मैं आपका प्रश्न मिला तो मैं इसे स्वयं हल करने की कोशिश कर रहा था।

आप शामिल करने के लिए

% "std_string.i"

अपने .मैं फ़ाइल में शामिल की जरूरत है। अधिक जानकारी के लिए http://www.swig.org/Doc1.3/Library.html#Library_stl_cpp_library देखें।

संबंधित मुद्दे