2012-02-03 31 views
17

Tôi đã sử dụng SWIG để bọc lớp C++ của tôi. Một số phương thức có tham số const std::string&. SWIG tạo ra một loại được gọi là SWIGTYPE_p_std__string tuy nhiên bạn không thể chỉ vượt qua một chuỗi bình thường cho điều này khi gọi phương thức trong C#. Ví dụ dưới đây chỉ là một ví dụ sửa đổi mà đi kèm với các gói SWIG .:Sử dụng SWIG với các phương thức lấy tiêu chuẩn :: string như một tham số

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

Trong tập tin giao diện của tôi, tôi chỉ có:

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

%{ 
#include "example.h" 
%} 

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

Và phương pháp này đang được bọc trong C++ như sau:

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

Có một số loại bản đồ tôi phải đưa vào tệp giao diện không? Nếu vậy, làm thế nào để tôi làm điều đó?

Trả lời

Các vấn đề liên quan