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!
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
rendez-vous ici pour un exemple de C# DLL qui est visible pour COM
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.
Python pour .NET fonctionne bien si vous ne voulez pas utiliser IronPython.
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).