Взаимодействие с другой функцией в другом классе - PullRequest
1 голос
/ 28 июля 2011

Мне бы пришлось вызывать код C ++ из .Net-кода через взаимодействие.

Мне просто интересно, есть ли вообще возможность взаимодействовать с другой функцией в другом классе?Например, в C ++ у меня есть следующий служебный класс:

 class  ConvertUtility
{
    public:
        static void Convert(PointList &ptList, const list<pts> &pts);


};

Я хочу вызвать его напрямую из .Net через взаимодействие, есть идеи, как это сделать?

Примечание: вот связанный вопрос , спрашивающий о том, как использовать пространство имен для различения разных методов.Но на этот раз я не хочу иметь ничего общего с пространством имен, только класс со статической функцией.

Редактировать: Учитывая, что в оболочке C уже слишком много функций (например, статическая функция extern "C", которая вызывается из .Net, без класса или пространства имен), я не хочу вводитьдополнительный слой упаковки, если я могу помочь.

1 Ответ

2 голосов
/ 28 июля 2011

В связанном вопросе, на который вы ссылались, Бен Фойгт говорит в комментарии к предложению написать оболочку C ++ / CLI:

Это правильный ответ.P / Invoke должен использоваться только для вызова функций с интерфейсом «C», что означает extern «C» для предотвращения искажения имени, а также ограничения для параметров и типов возврата.

Поскольку методstatic, я вижу два варианта:

  1. Написать простую функцию-оболочку C, которую можно вызывать с помощью P / Invoke.
  2. Написать оболочку C ++ / CLI, которую можно вызывать непосредственно из C #.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...