Articles of Swig

Cómo aplicar un mapa de tipo SWIG para un argumento de estructura de doble puntero

Tengo una API que estoy tratando de ajustar usando SWIG, de modo que pueda llamar a la biblioteca C subyacente desde python. Me he quedado atascado con una API particular fn: int update_tracks(track_t **phash_tracks, const pdws_t *pdw_frame, const rdws_t *rdw_frame, lib_t *lib, lib_meta_t *lib_meta, const cfg_t *cfg); Es el doble puntero a la estructura de […]

Wrap std :: vector of std :: vectores, C ++ SWIG Python

Quiero envolver un vector de vectores C ++ en código Python utilizando SWIG. ¿Es posible envolver este tipo de vectores de vectores? std::vector<std::vector>; En el archivo de interfaz MyApplication.i agregué estas líneas: %include “std_vector.i” %{ #include %} namespace std { %template(VectorOfStructVector) vector<vector>; } Pero, estoy recibiendo un error cuando se ejecuta SWIG. Puedo envolver este […]

SWIG & C / C ++ API de Python conectada – SEGUNO

Mi tarea es crear un progtwig dual. Al principio, comienzo un progtwig en C que llama a través de la API C / C ++ de Python mediante un método Python. El método llamado después de esa llamada a una función que se crea con SWIG. Les muestro mi muestra también con un seguimiento de […]

Despliegue descendente de Base * a Derivado *

Tengo las siguientes clases de c ++ (simplificadas) que estoy exponiendo a Python utilizando SWIG: struct Component { virtual void update(); } struct DerivedComponent : public Component { void update() { cout << "DerivedComponent::update()" << endl; } void speak() { cout << "DerivedComponent::speak()" << endl; } } class Entity { public: Component* component(const std::string& class_name) […]

Utilice el método heredado de la clase C ++ de extracción en una clase de Python (SWIG)

Actualmente estoy usando SWIG para facilitar la implementación de pequeños módulos en mi progtwig principal de C ++. La architecture de clase es la siguiente: foo.hpp: class Foo { public: virtual int pureFunc() = 0; int func() { return (42); } }; archivo.i: %module(directors=”1″) foo %feature(“director”) Foo; %{ #include “foo.hpp” %} %include “foo.hpp” archivo.py: import […]

Accediendo a C struct array a Python con SWIG

Estoy intentando llamar al código C existente desde Python. El código C define una estructura B que contiene una matriz de estructura de A s. El código C también define una función que pone valores en la estructura cuando se llama. Puedo acceder a la variable miembro de la matriz, pero no es una lista […]

(Swig to python) error de importación: el módulo dynamic no define la función de inicio

Estoy tratando de portar mi código c ++ a python con un gulp. Cuando termino de comstackr los archivos py, pyd, cxx y lib, debajo de Python (línea de comando), tecleo “Module Dnld”, muestra-> error de importación: el módulo dynamic no define la función de inicio . El siguiente es mi código, Además: agregue mi […]

En la comstackción SWIG: En el archivo de cabecera en la interfaz no se pueden resolver otros archivos de cabecera.

En el archivo de la interfaz. He incluido un archivo de encabezado. En ese archivo de encabezado hay muchos archivos de encabezado incluidos pero desde las bases de los árboles superiores, pero en Swig no es capaz de reconocerlos. Ejemplo: main.h #include #define PAGE 1 Swig no puede resolver ese directorio en el archivo de […]

¿Técnica para usar std :: ifstream, std :: ofstream en python a través de SWIG?

¿Hay alguna forma de usar std::[io]fstream en python a través de un swig? Tengo una clase C con funciones como: void readFrom(std::istream& istr); void writeTo(std::ostream& ostr); Me gustaría construir, en python, una instancia std::ofstream y pasarla como argumento para writeTo (y hacer lo mismo para leer). Traté de hacer una función como std::ostream& make_ostream(const std::string& […]

SWIG python inicializa un puntero a NULL

¿Es posible inicializar un ptr a NULL desde el lado de python cuando se trata con el módulo SWIG? Por ejemplo, digamos que envolví una estructura trackt en un módulo de gulp m (_m.so), puedo crear un puntero a la estructura desde Python de la siguiente manera: import m track = m.track_t() esto solo hará […]