2012-02-03 7 views
17

Я использовал SWIG для переноса моего класса C++. Некоторые методы имеют параметр const std::string&. SWIG создает тип с именем SWIGTYPE_p_std__string, однако вы не можете просто передать нормальную строку для этого при вызове метода в C#. Ниже пример просто модифицированный пример, который приходит с пакетом SWIG .:Использование SWIG с методами, которые принимают std :: string как параметр

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

В моем файле интерфейса я просто:

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

%{ 
#include "example.h" 
%} 

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

И метод, который заворачивают в C++ является:

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

Есть ли какая-то типовая карта, которую я должен поместить в файл интерфейса? Если да, то как мне это сделать?

ответ

Смежные вопросы