¿Cómo cargar un dll C#en python?
.net cpython (4)
¿Cómo puedo cargar ac # dll en python?
¿Tengo que poner un código extra en los archivos c #? (como exportar en archivos c ++)
No quiero usar IronPython. ¡Quiero importar un módulo a Python!
El paquete Python para .NET y la implementación de Python http://ironpython.net/ ahora funcionan de la misma manera.
Ejemplo para un C # DLL MyDll.dll
:
import clr
clr.AddReference(''MyDll'')
from MyNamespace import MyClass
my_instance = MyClass()
Vea esta publicación para más detalles.
Esto es para responder la segunda parte de su pregunta. Intente hacer visible el DLL COM.
usando el
[ComVisible(true)]
Ok IronPython es una implementación en .net del lenguaje Python. La tecnología utilizará el DLR de .net 4.0 cuando llegue, por lo que IronPython tendrá más Dinamismo (es una palabra). (En inglés, si eres un gurú de Python, te sentirás como en casa cuando utilices IronPython)
Por lo tanto, puede elegir IronPython; si lo hace, puede omitir la parte visible de COM. Dado que ambos (C #, Iron Python) están bajo .Net
Visite aquí para obtener una muestra de C # DLL que es visible para COM
Si no desea usar soluciones como Python .NET o IronPython, es posible implementar un contenedor C ++ / CLI y usar los tipos de Pythons para cargarlo. Por ejemplo:
La biblioteca de C ++ / CLI CallCSharp:
extern "C" {
__declspec(dllexport) void foo()
{
// here you could use managed and unmanaged code
Console.WriteLine("Hello, C# world...");
}
El script de Python:
from ctypes import cdll
lib = cdll.LoadLibrary("./CallCSharp.dll")
lib.foo()
Recomiendo encarecidamente leer este blog: http://pragmateek.com/if-your-plumbing-doesnt-work-youre-just-not-using-enough-pipes/#more-1745
También maneja el problema que surge cuando el reiniciador de C ++ / CLI llama al código que está en otro ensamblaje (obtendría algo como un error de Windows: [Error -532462766] Error de Windows 0xE0434352 de su script de Python en ese momento).
Python para .NET funciona bien si no quieres usar IronPython.