Создайте STL STD :: Set в C # и маршал для C ++ - PullRequest
3 голосов
/ 24 января 2012

Каков наилучший способ достичь этого? У меня есть список имен файлов, сгенерированных в C # windows service. Мне нужно в конечном итоге получить их в набор STL, и отправить его в файл. Я предполагаю, что на самом деле создание этой структуры в C # либо запрещено, либо слишком сложно, чтобы стоить, но могу ли я использовать нативный dll, который возвращает указатель на созданный набор, который я затем передаю в сопоставлении файлов? Любые мысли здесь будут полезны!

1 Ответ

5 голосов
/ 24 января 2012

Создание std::set в C # не очень практично.Однако можно передать коллекцию имен в C через PInvoke и поместить их в std::set.

extern "C" {

  void PassNames(const wchar** ppNames, int nameCount) {
    std:set<std::string> nameSet;
    for (int i = 0; i < nameCount; i++) {
      nameSet.insert(ppNames[i]);
    }

    PassOfTheSet(nameSet);
  }
}

Затем вы можете вызвать эту функцию из C # с помощью PInvoke и, следовательно, передать данные вродной

[DllImport("TheDllName.dll")
public static extern void PassNames(string[] names, int nameCount);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...