Как добавить привязку Python к C #? - PullRequest
3 голосов
/ 01 ноября 2010

Когда вы хотите вызвать C из Python, вы пишете такой модуль:

http://docs.python.org/extending/extending.html

Теперь у меня есть вопрос:

Я хочунаписать модуль для использования в Python с C #.

Как я могу заставить C # взаимодействовать с собственным Python?(Примечание: меня не интересует Python.NET или IronPython).

1 Ответ

2 голосов
/ 01 ноября 2010

Я знаю, что вам, вероятно, не понравится этот ответ, но, честно говоря: напишите его на C ++, используя boost :: python или непосредственно на Cython.

Можно было бы написать расширение с использованием C #, но вам нужно было бы преобразовать структуры данных, используемые Python, импортировать большую часть Python C API, маршалировать все назад и вперед между управляемым инеуправляемый код, сопоставление времени жизни объектов между сборщиком мусора в Python и C # и т. д., что, скорее всего, просто не стоит.

Вы также можете вызвать зависимость от платформы .NET, потерю независимости от платформы (возможно, даже приMono), хотя в целом это дает небольшую выгоду.

Если вы хотите использовать сборки C # в CPython, вам лучше всего выбрать модуль win32com pywin32 на стороне Python и COM Interop насторона .NET.Это позволяет вам выставлять ваши объекты C # как COM-классы с несколькими добавленными атрибутами на уровне источника и легко импортировать их в Python как объекты с событиями и всем остальным.У меня был большой успех при интеграции обеих платформ таким образом.

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