Как составить список в C # - PullRequest
4 голосов
/ 30 июня 2011

Я должен отправить список из C # в C ++. Список C # - List<string>MyList, и код C ++ принимает его как list<wstring>cppList. Как использовать маршалы для этого.

Спасибо

Ответы [ 3 ]

3 голосов
/ 30 июня 2011

C # не может P / вызывать сложные типы C ++. Вам придется использовать C ++ / CLI, у них может быть метод для его маршалинга. В противном случае вам придется распределить каждую строку по отдельности.

3 голосов
/ 30 июня 2011

Всегда разумнее не использовать маршалинг сложных типов между собственным кодом и управляемым кодом. В случае List эти типы полностью отличаются друг от друга, так как имеют разную структуру памяти для каждого элемента.

Таким образом, лучший способ - написать служебную функцию в нативной dll, которая принимает массив строк (char *) и вручную создает ваш нативный List и, в конечном счете, вызывает нужный метод. Вам легко создать оболочку этой служебной функции.

0 голосов
/ 30 июня 2011

strings в C # равны wstrings (2-байтовые строки Юникода), поэтому, если вы говорите, что это правда, то никаких специальных преобразований не требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...