передать строку из управляемого C # в управляемый C ++ - PullRequest
3 голосов
/ 19 ноября 2009

Каков предпочтительный метод передачи строки между C ++ и C #?

У меня есть класс c ++, где одна из функций принимает char const * const в качестве параметра.

как бы я вызвал эту функцию в C #? просто использование c # - string не работает, так как функция в C # требует sbyte*

C ++ класс:

public ref class MyClass
{
public:
    void Sample(char const * const Name);
}

Ошибка 2 Аргумент '1': невозможно преобразовать из 'строки' в 'sbyte *'

спасибо!

Ответы [ 3 ]

4 голосов
/ 19 ноября 2009

Если вы используете управляемый C ++, вы можете использовать класс System.String

1 голос
/ 17 декабря 2009

IMO лучшим способом было бы написать оболочку в C ++ / CLI, которая использует Marshal::StringToHGlobalAnsi или что-то подобное для преобразования System :: String ^ в указатель на символ и затем вызывать эту оболочку из C #.

1 голос
/ 19 ноября 2009

Вам нужно попробовать привести ваш параметр в C # как sbyte.

Sample((sbyte)nameOfParameter);

Это должно работать нормально.

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