2012-02-03 12 views
17

Użyłem SWIG do zawijania mojej klasy C++. Niektóre metody mają parametr const std::string&. SWIG tworzy typ o nazwie SWIGTYPE_p_std__string, ale nie można po prostu przekazać zwykłego ciągu znaków podczas wywoływania metody w języku C#. Poniższy przykład jest tylko zmodyfikowany przykład, który przychodzi wraz z pakietem SWIG .:Używanie SWIG z metodami, które pobierają std :: string jako parametr

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(); 
} 

W moim pliku interfejsu Mam tylko:

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

%{ 
#include "example.h" 
%} 

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

A metoda, która jest owinięta w C++ jest:

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

Czy jest jakiś rodzaj mapy, którą muszę umieścić w pliku interfejsu? Jeśli tak, jak mam to zrobić?

Odpowiedz

Powiązane problemy