我使用SWIG来包装我的c ++类。某些方法有const std::string&
作为参数。 SWIG创建一个名为SWIGTYPE_p_std__string
的类型,但是在调用c#中的方法时,不能为此传递正常的字符串。以下示例仅是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's just grab the original header file here */
%include "example.h"
用C ++包装的方法是:
void Shape::setName(const std::string& name)
{
mName = name;
}
我是否需要在接口文件中添加某种类型的地图?如果是这样,我该怎么做?
答案 0 :(得分:21)
当我找到你的问题时,我正试图自己解决这个问题。
您需要包含
%包含“std_string.i”
你的.i文件中的。有关详细信息,请参阅http://www.swig.org/Doc1.3/Library.html#Library_stl_cpp_library。