Comment charger un C# dll en python?

comment puis-je charger un c# dll en python?

dois-je ajouter du code dans les fichiers c#? (comme d'exporter dans des fichiers c++)

Je ne veux pas utiliser IronPython. Je veux importer un module Python!

18
demandé sur denfromufa 2010-01-16 18:38:22

4 réponses

Ceci est pour répondre à la seconde partie de votre Question Essayez de rendre la DLL COM visible.

en utilisant

[ComVisible(true)]

Ok IronPython est une implémentation .net du langage Python La technologie va utiliser le DLR du .net 4.0 quand il arrive afin IronPython aura plus de dynamisme (est-ce un mot). (En anglais si vous êtes un gourou Python, vous vous sentirez plus à la maison lorsque vous utilisez IronPython)

donc vous pouvez bien choisir IronPython, si vous faites cela vous pouvez sauter la partie COM visible. Depuis les deux (C# , Iron Python) sont sous .Net

http://ironpython.net/

rendez-vous ici pour un exemple de C# DLL qui est visible pour COM

4
répondu Vivek Bernard 2013-07-09 08:06:23

Le paquet Python for.NET et L'implémentation Python IronPython maintenant, de la même façon.

Exemple pour un C# DLL MyDll.dll:

import clr
clr.AddReference('MyDll')
from MyNamespace import MyClass
my_instance = MyClass()

Voir ce post pour plus de détails.

20
répondu Vincent 2017-05-23 11:46:24

Python pour .NET fonctionne bien si vous ne voulez pas utiliser IronPython.

5
répondu Warren 2013-09-16 12:04:02

si vous ne voulez pas utiliser des solutions comme Python.net ou IronPython, il est possible d'implémenter un enveloppeur C++/Clipper et d'utiliser des ctypes Pythons pour le charger. Par exemple:

La bibliothèque C++/CLI CallCSharp:

extern "C" {
    __declspec(dllexport) void foo()
    {
        // here you could use managed and unmanaged code
        Console.WriteLine("Hello, C# world...");
    }

le script 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

Il a également gère le problème qui se pose lorsque le code d'appel C++/CLI wrapper est dans un autre assemblage (vous obtiendriez quelque chose comme une WindowsError: [Error -532462766] Windows Error 0xE0434352 à partir de votre script Python alors).

2
répondu anhoppe 2017-03-21 15:06:34