как я могу загрузить С# 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. Поскольку оба (С#, Iron Python) находятся под .Net
Пакет Python для.NET и реализация Python IronPython теперь работают одинаково.
Пример для С# DLL MyDll.dll
:
import clr
clr.AddReference('MyDll')
from MyNamespace import MyClass
my_instance = MyClass()
См. Это сообщение для более подробной информации.
Python для .NET работает хорошо, если вы не хотите использовать IronPython.
Если вы не хотите использовать такие решения, как 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).