как я могу загрузить dll С# в python?
Должен ли я помещать дополнительный код в файлы С#? (например, экспорт в файлы С++)
Я не хочу использовать IronPython. Я хочу импортировать модуль в Python!
как я могу загрузить dll С# в python?
Должен ли я помещать дополнительный код в файлы С#? (например, экспорт в файлы С++)
Я не хочу использовать IronPython. Я хочу импортировать модуль в Python!
Это ответ на вторую часть вашего вопроса. Попробуйте сделать DLL COM видимой.
с помощью
[ComVisible(true)]
Ok IronPython — это .net-реализация языка Python. Технология будет использовать DLR .net 4.0, когда она появится, поэтому IronPython будет более динамичным (это слово). (На английском языке, если вы гуру Python, вы будете чувствовать себя как дома, когда будете использовать IronPython)
Таким образом, вы вполне можете выбрать IronPython, если вы сделаете это, вы можете пропустить видимую часть COM. Поскольку оба (C#, Iron Python) находятся под .Net
Пакет Python для .NET и реализация Python IronPython теперь работает так же.
Пример для C# DLL MyDll.dll
:
import clr
clr.AddReference('MyDll')
from MyNamespace import MyClass
my_instance = MyClass()
Дополнительные сведения см. в этом сообщении.
pip3 install pythonnet
- person Felix; 21.06.2017
Python для .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: [Error -532462766] Windows Error 0xE0434352 из вашего скрипта Python).