繁体   English   中英

痛饮:通过std :: vector <unsigned char> 从C ++生成的C#函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM