Cómo llamar a la interfaz en PCSC en Python
Simplemente busque una herramienta para convertir automáticamente esta interfaz API a la versión Python. Parece ser SWIG y Boost. He visto estos dos antes y ocasionalmente los probé varias veces. La razón por la que se recomienda utilizar herramientas automáticas es porque Python es más problemático para extender C++. Para las interfaces del lenguaje C, se pueden usar ctypes y cython para resolverlo fácilmente. Sin embargo, a veces resulta muy problemático utilizar estos métodos en C++.
Boost se usa a menudo en Linux y también se puede usar en Windows. SWIG se menciona en tutoriales generales. SIP también es famoso recientemente.
Los siguientes son algunos materiales de referencia, obtenidos mediante búsqueda.
==== Extensión con herramientas ===
Aunque el proceso de extensión no es complicado, existen muchas herramientas conocidas que se pueden utilizar para simplificarlo.
(1) SWIG
Creado por David Beazley, es una herramienta automática de construcción de extensiones. Lee archivos de encabezado C/C++ anotados y genera código de ajuste para varios lenguajes de secuencias de comandos como Python, TCL y Perl. SWIG puede incluir una gran cantidad de funciones de C++ en módulos de extensión de Python.
Evaluación: SWIG es simple y puede admitir una variedad de archivos de script, pero las funciones de C++ que admite están incompletas.
(2) SIP
Creado por Phil Thompson, es un constructor de módulos de C++ que crea específicamente contenedores para clases de C++. Alguna vez se usó para crear módulos de extensión PyQt y PyKDE, por lo que es relativamente famoso.
Evaluación: El soporte para funciones de C++ es muy completo, pero relativamente complicado.
(3) bgen
Esta herramienta está incluida en el conjunto de herramientas de creación de módulos en el paquete de distribución estándar de Python y es mantenida por Jack Jansen. Se utiliza para generar módulos de extensión para Python disponibles en la versión de Macintosh.
(4) pyfort
Creado por Paul dubois, se utiliza para generar módulos de extensión para el lenguaje Fortran.
(5) cxx
También creada por Paul Dubois, es una biblioteca que proporciona una API amigable para extensiones C++ de Python. Cxx permite utilizar muchos objetos de Python (como listas y tuplas) en operaciones STL. La biblioteca también proporciona la conversión del manejo de excepciones de C++ al manejo de excepciones de Python.
(6) WrapPy
Creado por Greg Couch, genera módulos de extensión leyendo archivos de encabezado C++.
(7) Biblioteca Boost Python
Creada por David Abrahams. Esta biblioteca proporciona envolturas de C++ más distintivas en extensiones de Python, al tiempo que requiere muy poca información adicional para escribir en la clase de C++ que se está ampliando.
Evaluación: Boost proporciona muchas bibliotecas prácticas para C++, como Regex (biblioteca de expresiones regulares), Graph (componentes y algoritmos de gráficos), concept check (verificación de conceptos en programación genérica), Thread (portátil C++ multi- biblioteca de subprocesos), Python (asignación de clases y funciones de C++ a Python), Pool (administración de grupos de memoria), etc.
Boost es generalmente una biblioteca con un alto valor práctico y alta calidad. Y enfatice el soporte multiplataforma. Sin embargo, también hay muchas cosas en Boost que son experimentales y deben usarse con precaución en el desarrollo real.
boost.python admite muchas funciones de C++, pero es más complejo.