Как загрузить dll С# в Python?
-
21-09-2019 - |
Вопрос
как я могу загрузить dll С# в Python?
Нужно ли мне добавлять дополнительный код в файлы С#?(например, экспорт в файлы С++)
Я не хочу использовать IronPython.Я хочу импортировать модуль в Python!
Решение
Это означает, что во второй части вашего вопроса попытайтесь сделать DLL COM видимым.
с помощью
[ComVisible(true)]
OK Ironpython - это реализация языка питона .NET.(На английском языке, если вы гуру Python, вы будете чувствовать себя как дома, используя IronPython)
Таким образом, вы вполне можете выбрать IronPython, если вы это сделаете, вы можете пропустить видимую часть COM.Поскольку оба (C#, Iron Python) находятся под .Net
Посетите здесь, чтобы увидеть образец библиотеки C#, видимой для COM.
Другие советы
Пакет Python для .NET и реализация Python ЖелезоПитон теперь работайте так же.
Пример для C# DLL MyDll.dll
:
import clr
clr.AddReference('MyDll')
from MyNamespace import MyClass
my_instance = MyClass()
Видеть эта почта Больше подробностей.
Питон для .NET хорошо работает, если вы не хотите использовать IronPython.
Если вы не хотите использовать такие решения, как Python .NET или IronPython, можно реализовать оболочку C++/CLI и использовать ctypes Python для ее загрузки.Например:
Библиотека C++/CLI CallCSharp:
extern "C" {
__declspec(dllexport) void foo()
{
// here you could use managed and unmanaged code
Console.WriteLine("Hello, C# world...");
}
Скрипт Python:
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
Он также решает проблему, возникающую, когда оболочка C++/CLI вызывает код, находящийся в другой сборке (вы получите что-то вроде WindowsError:[Ошибка -532462766] Ошибка Windows 0xE0434352 из вашего скрипта Python).