[英]Swig: pass std::vector<unsigned char> to c# function generated from c++
我有一个C ++函数:
std::map<std::string, std::string> foo(const std::vector<unsigned char>& v);
Swig生成以下C#函数:
MapStringString foo(SWIGTYPE_p_std__vectorT_unsigned_char_t v);
我想在C#函数中调用它,该函数接收byte []并返回IDictionary,即:
IDictionary<string, string> bar(byte[] b)
{
SWIGTYPE_p_std__vectorT_unsigned_char_t b1;
// initialize b1 from b
MapStringString m = foo(b1);
IDictionary<string, string> result;
// Populate result from MapStringString
return result;
}
我如何从b初始化b1(即从byte []开始SWIGTYPE_p_std__vectorT_unsigned_char_t),以及如何从MapStringString填充IDictionary?
提前致谢!
您可以在SWIG界面中快速开始使用以下方法:
%include <std_vector.i>
%template(VectorUChar) std::vector<unsigned char>;
那应该给你一个可以在C#中使用的真实类型,它是C ++ std :: vector的代理。 (例如,它可以用于bar()
函数,但在调用时几乎是无缝的)。
因为实际上已经有了Byte[]
您可以将一个类型映射表放在一起,如果更有用的话,它可以根据指针+长度透明地构造一个向量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.