Swig:将std :: vector <unsigned char>传递给从c ++生成的c#函数

时间:2019-07-03 15:57:48

标签: c# c++ swig

我有一个C ++函数:

SearchResultsViewType

Swig生成以下C#函数:

std::map<std::string, std::string> foo(const std::vector<unsigned char>& v);

我想在C#函数中调用它,该函数接收byte []并返回IDictionary,即:

MapStringString foo(SWIGTYPE_p_std__vectorT_unsigned_char_t v);

如何从b初始化b1(即从byte []开始SWIGTYPE_p_std__vectorT_unsigned_char_t)以及如何从MapStringString填充IDictionary?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在SWIG界面中快速开始使用以下内容:

%include <std_vector.i>
%template(VectorUChar) std::vector<unsigned char>;

这应该为您提供一种可以在C#中使用的真实类型,它是C ++ std :: vector的代理。 (例如,它可以用于您的bar()函数,但是在调用时几乎是无缝的。)

既然您实际上已经有了一个Byte[],那么您可能可以将一个类型映射放在一起,如果更有用的话,它可以根据指针+长度透明地构造一个向量。