Как загрузить С# 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).