Как мы можем экспортировать методы C#?
У меня есть dll, и я хочу использовать его методы на языке Python с ctypes модулем. Поскольку я должен использовать ctypes модуль, я должен экспортировать методы C# для них, чтобы быть видимым в Python.
Так, как я могу экспортировать методы C# (как, они делают в C++)?
Вопреки распространенному убеждению, это - это .
См. здесь .
Это невозможно. Если вам нужен экспорт 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 # является другой возможностью.
с нормальной реализацией Python («CPYthon»), вы не можете, по крайней мере, не напрямую.
Вы можете написать родные функции C в наших методах C # с использованием C ++ / CLI и вызовите эти обертки из Python.
Или, вы можете попробовать IronPython . Это позволяет запустить код Python и код вызова на любом языке .NET, включая C #.
(Это больше не может быть уместно, поскольку Slaks нашла, что ориентированная ссылка, но я оставлю отредактированную версию для справки ...)
«Нормальный» способ разоблачения .NET / C # объекты в неуправляемый код. (Как Python) состоит в том, чтобы создать COM-COUNDABLE WRAPPER для DLL C # DLL (.NET) и вызовите, что используя поддержку COM / OLE Python. Для создания COM-COUNDABLABLE WRAPPPER используйте TLBEXP
и / или REPARM
Утилиты командной строки.
Очевидно, однако, это не предоставляет API в стиле C / DLL, который делает ссылку Slaks.