Подтвердить что ты не робот

Использование SWIG с методами, которые принимают std::string как параметр

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

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 just grab the original header file here */
%include "example.h"

И метод, который заверяется в С++, это:

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

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

4b9b3361

Ответ 1

Я пытался решить это сам, когда нашел ваш вопрос.

Вы должны включить

%include "std_string.i" 

в вашем .i файле. Увидеть: