Передача vector из С++\CLI в C#

304
22 апреля 2017, 21:32

Есть такой метод:

void App::TestFilesOpen( const std::vector<std::wstring> & fileVector)
{
  int size = fileVector.size();
  array<System::String ^> ^ fileArray = gcnew array<System::String ^>( size );
  for ( size_t i = 0; i < size; ++i )
    fileArray[i] = gcnew System::String( fileVector[i].c_str() );
  window_->SendFilePathsToRecorder( fileArray );
}

Какой типа параметра должен быть в методе SendFilePathsToRecorder на С#?

Answer 1

Насколько я понимаю, вам нужен

string[]

Символ ^ в C++/CLI означает ссылку, ссылочные типы передаются именно так — по ссылке. То есть при трансляции из C++/CLI в C# ссылочные типы должны передаваться с ^, и на стороне C# эту крышку записывать не надо. Точно так же, массив содержит не сами элементы ссылочного типа, а ссылки на них, что записывается как System::String^.

Ну и array<...> — это просто .NET-массив, кодируется при помощи [] в C#.

READ ALSO
Как получить список всех каналов на youtube?

Как получить список всех каналов на youtube?

Собственно вопрос в шапкеУдастся ли через api с учетом квот? Или лучше реализовывать как html-парсер? Если парсер, то подскажите примерный алгоритм(вообще...

471
Динамический и анонимный тип?

Динамический и анонимный тип?

Возвращаясь к моему вопросу заданному ранее: Приведение типа к dynamic и ответа данного на него, что привидени типов там никакого нет, и что левая...

276
OpenXML C# read .docx

OpenXML C# read .docx

Пытаюсь получить весь текст из документаdocx

372
Совместимость программ под Windows c Linux и Mac

Совместимость программ под Windows c Linux и Mac

Пишу программу на Windows Forms C# в которой используются хуки APIНа винде все работает конечно, но интересует вопрос о совместимости с другими ОС, будет...

367