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ć?