Articles of Swig

swig no hay módulo llamado _ejemplo

No puedo reproducir el ejemplo básico de SWIG en Windows. Mi error está en los documentos SWIG y estoy seguro de que hago las 2 correcciones que mencionan. Para este error: >>> import example Traceback (most recent call last): File “”, line 1, in ? File “example.py”, line 2, in ? import _example ImportError: No […]

¿Cómo usar float ** en Python con Swig?

Estoy escribiendo enlaces de swig para algunas funciones de c. Una de estas funciones toma un flotador **. Ya estoy usando cpointer.i para los punteros normales y busqué en carrays.i , pero no encontré la forma de declarar un flotador **. ¿Que recomiendas? archivo de interfaz: extern int read_data (const char * file, int * […]

Cómo calcular una imagen PIL de Python utilizando SWIG

Tengo una biblioteca que toma una estructura de imagen en C muy simple: // Represents a one-channel 8-bit image typedef struct simple_image_t { uint32 rows; uint32 cols; uint8 *imgdata; } simple_image; No creé esta biblioteca, ni esta estructura, así que no puedo cambiarla. Soy responsable de envolver esta biblioteca para python utilizando SWIG. El envoltorio […]

Cómo enumerar los miembros de la enumeración utilizando SWIG

¿Puedo exponer una enum C ++ a SWIG como una entidad real en lugar de un conjunto de constantes para poder enumerarlas en el código de Python?

Error de argumento SWIG al usar “using std :: vector” en python

Esto está muy relacionado con esta pregunta. Independientemente de si esto es o no una práctica de encoding, me he encontrado con un código que se ve así prueba.hh #include using std::vector; class Test { public: vector data; }; Estoy intentando cambiar esto usando swig3.0 usando el siguiente archivo de interfaz test.i %module test_swig %include […]

¿Cuál es la forma más limpia de llamar a una función de Python desde C ++ con un objeto envuelto SWIG?

Tengo el siguiente código, que implementa una clase simple de C ++ (ObjWithPyCallback) con una función de callback de Python. La idea es llamar a la función Python con “esto” como único argumento. El problema es que, dado que ObjWithPyCallback es un objeto envuelto SWIG, necesito el tipo de información SWIG para crear un objeto […]

% typemapping de una biblioteca de C ++ para la interfaz de Python

Quiero crear un contenedor python para mi biblioteca C ++. Sería genial si hubiera una conversión automática de std :: vector a las listas de python y al revés. Desafortunadamente, si agrego este código a mi archivo de interfaz, todavía recibo errores en tiempo de ejecución. %typemap(in) std::vector value (std::vector vIn) { int iLen = […]

auto_ptr con swig

Estoy tratando de envolver una biblioteca de C ++ que usa auto_ptr. Estoy usando swig y quiero generar enlaces de python. He visto la sección del documento de swig sobre cómo usar swig con punteros inteligentes aquí . Pero no puedo hacerlo funcionar. Swig genera código que quiere inicializar auto_ptr usando una referencia constante, pero […]

Usando SWIG con puntero para funcionar en C struct

Estoy tratando de escribir un contenedor SWIG para una biblioteca de C que utiliza punteros a funciones en sus estructuras. No puedo averiguar cómo manejar estructuras que contienen punteros de función. Un ejemplo simplificado sigue. prueba.i: /* test.i */ %module test %{ typedef struct { int (*my_func)(int); } test_struct; int add1(int n) { return n+1; […]

Cómo exponer una clase de C ++ a Python sin construir un módulo

Quiero saber si hay alguna forma de exponer una clase de C ++ a Python pero sin construir una biblioteca compartida intermedia. Aquí está mi escenario deseable. Por ejemplo tengo la siguiente clase de C ++: class toto { public: toto(int iValue1_, int iValue2_): iValue1(iValue1_), iValue2(iValue2_) {} int Addition(void) const {if (!this) return 0; return […]