2012-02-03 6 views
17

Utilicé SWIG para ajustar mi clase de C++. Algunos métodos tienen un const std::string& como parámetro. SWIG crea un tipo llamado SWIGTYPE_p_std__string, pero no se puede pasar una cadena normal para esto cuando se invoca el método en C#. El ejemplo siguiente es sólo un ejemplo modificado que viene con el paquete TRAGO .:Uso de SWIG con métodos que toman std :: string como parámetro

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

En mi archivo de interfaz sólo tengo:

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

%{ 
#include "example.h" 
%} 

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

Y el método que se está envuelto en C++ es:

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

¿Hay algún tipo de mapa de tipo que tengo que poner en el archivo de interfaz? Si es así, ¿cómo hago eso?

Respuesta

Cuestiones relacionadas