Вопрос

как я могу загрузить dll С# в Python?

Нужно ли мне добавлять дополнительный код в файлы С#?(например, экспорт в файлы С++)

Я не хочу использовать IronPython.Я хочу импортировать модуль в Python!

Это было полезно?

Решение

Это означает, что во второй части вашего вопроса попытайтесь сделать DLL COM видимым.

с помощью

[ComVisible(true)]

OK Ironpython - это реализация языка питона .NET.(На английском языке, если вы гуру Python, вы будете чувствовать себя как дома, используя IronPython)

Таким образом, вы вполне можете выбрать IronPython, если вы это сделаете, вы можете пропустить видимую часть COM.Поскольку оба (C#, Iron Python) находятся под .Net

http://ironpython.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).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top