Как экспортировать методы C#?

Как мы можем экспортировать методы C#?

У меня есть dll, и я хочу использовать его методы на языке Python с ctypes модулем. Поскольку я должен использовать ctypes модуль, я должен экспортировать методы C# для них, чтобы быть видимым в Python.

Так, как я могу экспортировать методы C# (как, они делают в C++)?

15
задан denfromufa 8 September 2016 в 05:18
поделиться

4 ответа

Вопреки распространенному убеждению, это - это .
См. здесь .

23
ответ дан 1 December 2019 в 02:46
поделиться

Это невозможно. Если вам нужен экспорт DLL, вам нужно использовать язык C ++ / CLI. Например:

public ref class Class1 {
public:
  static int add(int a, int b) {
      return a + b;
  }
};

extern "C" __declspec(dllexport) 
int add(int a, int b) {
  return Class1::add(a, b);
}

Класс может быть написан также в C #. Компилятор C ++ / CLI излучает специальную Thunk для экспорта, который гарантирует, что CLR загружается, и выключатели выполнения в управленческом режиме. Это не совсем быстро.

Написание [ComVisible (True)] код в C # является другой возможностью.

1
ответ дан 1 December 2019 в 02:46
поделиться

с нормальной реализацией Python («CPYthon»), вы не можете, по крайней мере, не напрямую.

Вы можете написать родные функции C в наших методах C # с использованием C ++ / CLI и вызовите эти обертки из Python.

Или, вы можете попробовать IronPython . Это позволяет запустить код Python и код вызова на любом языке .NET, включая C #.

1
ответ дан 1 December 2019 в 02:46
поделиться

(Это больше не может быть уместно, поскольку Slaks нашла, что ориентированная ссылка, но я оставлю отредактированную версию для справки ...)

«Нормальный» способ разоблачения .NET / C # объекты в неуправляемый код. (Как Python) состоит в том, чтобы создать COM-COUNDABLE WRAPPER для DLL C # DLL (.NET) и вызовите, что используя поддержку COM / OLE Python. Для создания COM-COUNDABLABLE WRAPPPER используйте TLBEXP и / или REPARM Утилиты командной строки.

Очевидно, однако, это не предоставляет API в стиле C / DLL, который делает ссылку Slaks.

1
ответ дан 1 December 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: