Swig: передать std :: vector <unsigned char> в функцию c #, созданную из c ++ - PullRequest
0 голосов
/ 03 июля 2019

У меня есть функция 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т.е.

1 Ответ

0 голосов
/ 04 июля 2019

Вы можете быстро начать работать с чем-то вроде этого в своем интерфейсе SWIG:

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

Это должно дать вам реальный тип, с которым вы можете работать из C #, это прокси для C ++ std ::вектор.(Это будет работать для вашей bar() функции, например, но вряд ли будет беспроблемным в точке вызова).

Поскольку у вас уже есть Byte[], вы, вероятно, могли бы собрать карту типов, котораяпрозрачно создает вектор из указателя + длины, если это более полезно.

...