Articles of gulp de

SWIG devuelve PyObject como objeto python?

Supongamos que tengo una clase envuelta en SWIG cuidando de un puntero a algunos datos, como se muestra en el siguiente código. Me gustaría construir un objeto ndarray ndarray partir de los datos y devolverlo al usuario. Quiero que use los datos como su búfer, pero no tome la propiedad. Si tengo razón, usaré la […]

¿Cómo crear un archivo de interfaz SWIG?

Soy nuevo en SWIG Y menos tiempo para hacer las cosas. Estoy tratando de enlazar las clases de c ++ a python. He configurado SWIG en Windows y he intentado ejecutarlo. Fue un exito Mi archivo example.i es como /* File: example.i */ %module example %{ #define SWIG_FILE_WITH_INIT #include “Item.h” }% #include “Item.h” Pero parece […]

Usando distutils donde el archivo de interfaz swig está en la carpeta src

Tengo un setup.py que se parece a esto: from setuptools import setup, Extension import glob sources = glob.glob(‘src/*.cpp’) + glob.glob(‘src/*.i’) # this is ugly, but otherwise I get the wrapper included twice sources = [source for source in sources if ‘_wrap’ not in source] setup( name = ‘engine’, ext_modules = [ Extension( ‘_engine’, sources = […]

¿Cómo se implementan las variables globales de C / C ++ en python?

Mientras leía la documentación de SWIG, pasé por estas líneas … Las variables globales de C / C ++ son totalmente compatibles con SWIG. Sin embargo, el mecanismo subyacente es algo diferente de lo que podría esperar debido a la forma en que funciona la asignación de Python. Cuando escribes lo siguiente en Python a […]

Una pregunta de error SWIG de Python trivial

Estoy tratando de hacer que Python se ejecute con swig para hacer C / C ++. Estoy ejecutando el tutorial aquí , ‘construyendo un módulo python’. Cuando hago la llamada gcc -c example.c example_wrap.c -I /my_correct_path/python2.5 Me sale un error: my_correct_path/python2.5/pyport.h:761:2: error: #error “LONG_BIT definition appears wrong for platform (bad gcc/glibc config?).” example_wrap.c: In function […]

Cómo encadenar un objeto de matriz de swig en python

Estoy usando swig wrapper de openbabel (escrito en C ++, y proporciono un wrapth de python a través de swig) A continuación, solo lo uso para leer un archivo de estructura de molécula y obtener la propiedad unitcell de él. import pybel for molecule in pybel.readfile(‘pdb’,’./test.pdb’): unitcell = molecule.unitcell print unitcell |..> |..> <openbabel.OBUnitCell; proxy […]

Se detectó una pérdida de memoria en Swig / Python

Tengo una clase muy complicada para la cual estoy tratando de hacer envoltorios de Python en SWIG. Sin embargo, cuando creo una instancia del elemento en Python, no puedo inicializar ciertos miembros de datos sin recibir el mensaje: >>> myVar = myModule.myDataType() swig/python detected a memory leak of type ‘MyDataType *’, no destructor found. ¿Alguien […]

SWIG pasando el argumento a la función de callback de Python

Ya casi termino. Ahora tengo un código de trabajo que llama a la función de callback de Python. Lo único que necesito ahora es cómo pasar el argumento a la función de callback de python. Mi callback.c es: #include typedef void (*CALLBACK)(void); CALLBACK my_callback = 0; void set_callback(CALLBACK c); void test(void); void set_callback(CALLBACK c) { […]

Python / SWIG: Salida de una matriz

Estoy intentando generar una matriz de valores desde una función C envuelta con SWIG para Python. Lo que estoy tratando de hacer es usar el siguiente mapa de tipos. Pseudo código: int oldmain() { float *output = {0,1}; return output; } Mapa de tipo: %typemap(out) float* { int i; $result = PyList_New($1_dim0); for (i = […]

SWIG en el mapa de tipos funciona, pero argout no lo hace

Tengo este archivo de foobar.h class Foobar { public: void method(int arg[2]) {}; }; Después de comstackr la interfaz SWIG para Python, si bash ejecutar este método desde Python, se indica TypeError: in method ‘Foobar_method’, argument 2 of type ‘int [2]’ Ciertamente. Así que escribo este mapa de tipo SWIG: %typemap(in) int [2] {} y […]