Как я могу загрузить C# dll в python?Как загрузить C# dll в python?
Должен ли я добавить дополнительный код в файлы C#? (например, экспорт в файлы C++)
Я не хочу использовать IronPython. Я хочу импортировать модуль в Python!
Как я могу загрузить C# dll в python?Как загрузить C# dll в python?
Должен ли я добавить дополнительный код в файлы C#? (например, экспорт в файлы C++)
Я не хочу использовать IronPython. Я хочу импортировать модуль в Python!
Это ответ на вторую часть вашего вопроса. Попробуйте сделать DLL COM видимым.
с помощью
[ComVisible(true)]
Ok IronPython является .net implemenatation языка Python Технология собирается использовать DLR в .NET 4.0, когда он прибывает так IronPython будет больше динамизма (это это слово). (На английском, если вы гуру Python, вы будете чувствовать себя как дома, когда используете IronPython)
Итак, вы можете выбрать IronPython, если вы это сделаете, вы можете пропустить видимую часть COM. Так как (C#, Iron Python) находятся под .Net
Теперь, когда я увидел Ironpython, я понял, что это такое. Я не хочу этого. Я хочу импортировать модуль в python: P –
Вы имеете в виду код импорта (порт) C# на Python или импортируете dll C# в Python –
Импорт и использование функций из C# Dll в Python –
Python for .NET хорошо работает, если вы не хотите использовать IronPython.
Пакет Python for.NET и реализация Python IronPython теперь работают одинаково.
Пример для C# DLL MyDll.dll
:
import clr
clr.AddReference('MyDll')
from MyNamespace import MyClass
my_instance = MyClass()
См this post для более подробной информации.
intall it first by 'pip3 install pythonnet' – Felix
Если вы не хотите использовать такие решения, как Python .NET или IronPython, можно реализовать оболочку C++/CLI и использовать типы Pythons для загрузки. Например:
C++/CLI библиотеки CallCSharp:
extern "C" {
__declspec(dllexport) void foo()
{
// here you could use managed and unmanaged code
Console.WriteLine("Hello, C# world...");
}
Питон скрипт:
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 вызывает код, который находится в другой сборке (вы получите что-то вроде Wind owsError: [Ошибка -532462766] Ошибка Windows 0xE0434352 из вашего скрипта Python).
Работает ли это на Mono и .NET Core? – denfromufa
Не знаю. И я уже отказался от этого подхода, я не получил загрузку ссылочных сборок. Я попытаюсь вычислить Python .NET. – anhoppe
Возможно, вы захотите добавить немного разъяснений. Мы говорим о * CPython * или * IronPython *? –
Я хочу импортировать модуль в Python (а не IronPython, то ..) –
Вы собираетесь бороться. C# DLL записывается в CIL и не является питоном, и не читается python. Вы собираетесь либо выходить из .NET, либо использовать IronPython или страдать от использования COM. Не можете ли вы использовать собственный модуль python? –