Я использовал 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;
}
Есть ли какая-то типовая карта, которую я должен поместить в файл интерфейса? Если да, то как мне это сделать?