Articles of Swig

SWIG C-to-Python Int Array

Estoy tratando de acceder a una función C con el siguiente prototipo de python usando swig: int cosetCoding(int writtenDataIn, int newData, const int memoryCells, int *cellFailure, int failedCell); Swig crea el .so sin problemas y puedo importarlo a Python, pero cuando bash acceder a él con lo siguiente: cosetCoding.cosetCoding(10,11,8,[0,0,0,0,0,0,0,0],0) Me sale el siguiente rastreo: Traceback […]

¿Cómo exponer std :: vector como una lista de Python usando SWIG?

Estoy tratando de exponer esta función a Python usando SWIG: std::vector get_match_stats(); Y quiero que SWIG genere código de envoltura para Python para poder verlo como una lista de enteros. Agregando esto al archivo .i: % incluye “typemaps.i” % incluye “std_vector.i” espacio de nombres estándar { % template (IntVector) vector ; } Estoy ejecutando SWIG […]

M2Crypto no se instala en venv, o swig no define __x86_64__ que rompe la comstackción contra OpenSSL

Estoy intentando instalar el paquete Python M2Crypto en un virtualenv en una máquina x86_64 RHEL 6.1. Este proceso invoca swig, que falla con el siguiente error: $ virtualenv -q –no-site-packages venv $ pip install -E venv M2Crypto==0.20.2 Downloading/unpacking M2Crypto==0.20.2 Downloading M2Crypto-0.20.2.tar.gz (412Kb): 412Kb downloaded Running setup.py egg_info for package M2Crypto Installing collected packages: M2Crypto Running […]

cc1plus: advertencia: la opción de línea de comando “-Wstrict-prototypes” es válida para Ada / C / ObjC pero no para C ++

Estoy construyendo una extensión de C ++ para usar en Python. Veo que esta advertencia se genera durante el proceso de comstackción, cuando un tipo: python setup.py build_ext -i ¿Qué lo está causando y cómo lo arreglo? Por cierto, aquí hay una copia de mi archivo de configuración: #!/usr/bin/env python “”” setup.py file for SWIG […]

Exponer un vector como una vista de memoria utilizando SWIG

Tengo un archivo de cabecera como: #include inline std::vector& vec() { static std::vector v { ‘a’, ‘b’, ‘c’, ‘d’ }; return v; } inline const std::vector& cvec() { return vec(); } Puedo envolverlo en SWIG usando std_vector.i y pyabc.i pero eso es bastante ineficiente (hay un salto entre C ++ y el código de Python […]

Cómo envolver una función c ++ que toma un puntero de función en python usando SWIG

Aquí hay un ejemplo simplificado de lo que quiero hacer. Supongamos que tengo el siguiente código c ++ en test.h double f(double x); double myfun(double (*f)(double x)); Realmente no importa por ahora lo que hacen estas funciones. Lo importante es que myfun toma un puntero de función. Después de incluir el archivo test.h en mi […]

Enlaces SVN de Python para Windows

¿Dónde puedo encontrar enlaces precomstackdos de Python SWIG SVN para Windows?

Exponiendo una API de C ++ a Python

Actualmente estoy trabajando en un proyecto donde tuve que envolver las clases de C ++ con Python para poder ejecutar el progtwig. Así que mi experiencia específica también involucró la incorporación del intérprete de Python en nuestro progtwig. Las alternativas que probé fueron: Boost.Python Me gustó la API más limpia producida por Boost.Python, pero el […]

Pasando funciones python a código SWIG envuelto en C ++

Estoy tratando de envolver una biblioteca de C ++ para python, usando SWIG. La biblioteca utiliza con frecuencia las funciones de callback, pasando funciones de callback de cierto tipo a los métodos de clase. Ahora, después de ajustar el código, me gustaría crear la lógica de callback de python. es posible? Aquí hay un experimento […]

Envolviendo C-enum en un módulo de Python con Swig

Tengo una enumeración simple en C en myenum.h: enum MyEnum { ONE, TWO, THREE }; El problema es que cuando asigno esto a Python, solo puedo acceder a la enumeración a través del nombre del módulo, no a través de MyEnum. Por lo tanto, los valores UNO, DOS, TRES se incluyen con cualquier otra función […]