Ahora quiero encapsular el código fuente del módulo de Python que escribí en un archivo DLL y luego llamarlo en otros scripts de Python. ¿Es esto posible?
Sí, simplemente convierta el módulo de Python en un módulo dll y use el módulo ctypes que viene con Python para cargar y llamar.
ctypes es la biblioteca de funciones externa de Python. Proporciona tipos de datos compatibles con C y permite llamar a funciones en una DLL o biblioteca compartida. Puede utilizar este módulo para empaquetar estas bibliotecas en Python puro.
ctypes exporta objetos cdll y, en sistemas Windows, también exporta objetos windll y oledll para cargar bibliotecas de enlaces dinámicos. Al manipular las propiedades de estos objetos, puede cargar bibliotecas de enlaces dinámicos externos. cdll carga funciones exportadas según el protocolo de llamada estándar cdecl, mientras que la biblioteca importada por windll llama a sus funciones según el protocolo de llamada stdcall.
Información ampliada:
Métodos relevantes para cargar y llamar a DLL:
1. ¿Cargar DLL?
Al cargar, debe basarse. depende de lo que vas a hacer. ¿A qué convención de llamada se ajusta la función llamada? ?
Convención de llamada stdcall: ¿dos métodos de carga?
¿Objdll = ctypes.windll.LoadLibrary("dllpath")?
Objdll = ctypes.WinDLL( " dllpath")
Convención de llamada cdecl: ¿También hay dos métodos de carga?
Objdll = ctypes.cdll.LoadLibrary("dllpath")?
Objdll = ¿ctypes.CDLL("dllpath")?
De hecho, windll y cdll son objetos de la clase WinDLL y la clase CDll respectivamente.
2. ¿Llamar al método en el dll?
Al cargar el dll, se devolverá un objeto DLL (asumiendo que el nombre es Objdll). Puede usar este objeto para llamar. método en el dll. por ejemplo, si hay un método llamado Agregar en el dll (tenga en cuenta que si el método se declara mediante stdcall, si no es una función exportada declarada en un archivo def o "C" externo, el compilador modificará el nombre de la función, así que preste atención a esto.)
Llame a: nRet = Objdll.Add(12, 15) para completar una llamada. ?
Tipos de la Enciclopedia Baidu