Как загрузить С# dll в python?

как я могу загрузить С# dll в python?

Должен ли я добавить лишний код в файлы С#? (например, экспорт в файлы С++)

Я не хочу использовать IronPython. Я хочу импортировать модуль в Python!

Ответ 1

Это ответ на вторую часть вашего вопроса Попробуйте сделать DLL COM видимым.

используя

[ComVisible(true)]

Ok IronPython - это .net-реализация языка Python  Технология будет использовать DLR.net 4.0, когда она придет, так что у IronPython будет больше динамизма (это слово). (На английском, если вы гуру Python, вы будете чувствовать себя как дома, когда используете IronPython)

Итак, вы можете выбрать IronPython, если вы это сделаете, вы можете пропустить видимую часть COM. Поскольку оба (С#, Iron Python) находятся под .Net

http://ironpython.net/

Посетите здесь пример С# DLL, который видим для COM

Ответ 2

Пакет Python для.NET и реализация Python IronPython теперь работают одинаково.

Пример для С# DLL MyDll.dll:

import clr
clr.AddReference('MyDll')
from MyNamespace import MyClass
my_instance = MyClass()

См. Это сообщение для более подробной информации.

Ответ 3

Python для .NET работает хорошо, если вы не хотите использовать IronPython.

Ответ 4

Если вы не хотите использовать такие решения, как Python.NET или IronPython, можно реализовать оболочку С++/CLI и использовать типы Pythons для загрузки. Например:

Библиотека С++/CLI CallCSharp:

extern "C" {
    __declspec(dllexport) void foo()
    {
        // here you could use managed and unmanaged code
        Console.WriteLine("Hello, C# world...");
    }

Python script:

from ctypes import cdll
lib = cdll.LoadLibrary("./CallCSharp.dll")
lib.foo()

Я сильно рекомендую читать этот блог: http://pragmateek.com/if-your-plumbing-doesnt-work-youre-just-not-using-enough-pipes/#more-1745

Он также обрабатывает проблему, возникающую, когда оболочка С++/CLI вызывает код, который находится в другой сборке (тогда вы получите что-то вроде WindowsError: [Ошибка -532462766] Ошибка Windows 0xE0434352 с вашего Python script).