Domanda

come posso caricare un c # dll in Python?

Devo mettere un po 'codice aggiuntivo nei file C #? (Come l'esportazione in file c ++)

Non voglio usare IronPython. Voglio importare un modulo di Python!

È stato utile?

Soluzione

Questo è quello di rispondere alla seconda parte della tua domanda Prova a fare la DLL COM visibile.

utilizzando il

[ComVisible(true)]

Ok IronPython è un implemenatation Netto del linguaggio Python  La tecnologia sta per utilizzare il DLR di .NET 4.0 quando si arriva così IronPython avrà più Dinamismo (che è una parola). (In inglese, se sei un guru Python, vi sentirete più a casa quando si utilizza IronPython)

Così si può anche scegliere IronPython, se si fa questo si può saltare la parte visibile COM. Dal momento che sia (C #, Python ferro) sono sotto .Net

http://ironpython.net/

Visita qui per un campione C # DLL che è visibile a COM

Altri suggerimenti

Il pacchetto Python for.NET e l'implementazione di Python IronPython ora funzionano allo stesso modo.

Esempio di MyDll.dll C # DLL:

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

questo post per ulteriori dettagli.

Python for .NET funziona bene se non si desidera utilizzare IronPython.

Se non si desidera utilizzare soluzioni come Python .NET o IronPython è possibile implementare un C ++ / CLI involucro e utilizzare ctypes Pythons per caricarlo. Ad esempio:

La libreria CallCSharp C ++ / CLI:

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

Lo script Python:

from ctypes import cdll
lib = cdll.LoadLibrary("./CallCSharp.dll")
lib.foo()

Sono fermamente vi consiglio la lettura di questo blog: http://pragmateek.com/if-your-plumbing-doesnt-work-youre-just-not-using-enough-pipes/#more-1745

E 'gestisce anche il problema che si verifica quando il C ++ / CLI codice chiamate wrapper che è in un altro assembly (si otterrebbe qualcosa come un WindowsError: [Errore -532.462.766] di Windows Error 0xE0434352 dal vostro script Python allora).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top