Articles of boost

impulso 1.53 error fatal de python LNK1104 boost_python-vc110-mt-gd-1_53.lib

Estoy intentando (por algunos días ahora) construir un DLL generado a partir de código C ++ con boost / python para ser usado por python. Soy un estudiante de Alemania y tuve que ver principalmente con Java hasta ahora (escribí algunas cosas básicas sobre OpenGL y Gimp Filter antes en C ++). Así que perdóname […]

Función exponer boost.python que devuelve el vector

Estoy escribiendo un módulo de extensión para Python en C ++ y estoy usando boost.python. Quiero exponer una función que devuelve un vector . No estoy exactamente seguro de cómo hacer esto y cómo interactuará con la administración de memoria de Python WRT. Mi primer pensamiento fue envolver MyClass en shared_ptr , por lo tanto […]

boost :: python: expone una clase de C ++ a un script de python incrustado en una aplicación de C ++

Puedo cargar con éxito un archivo de script de Python y llamar a una función usando boost::python en una aplicación de C ++. En el wiki de Incremento de Python Incrustar Python hay una sugerencia sobre cómo cargar un módulo de python . namespace bp = boost::python; bp::object import(const std::string& module, const std::string& path, bp::object& […]

boost.python: los tipos de argumentos no coinciden con la firma de C ++

Estoy teniendo un problema extraño al llamar a una función de C ++ en python. Expuse una clase de la que quiero llamar a una función: class_<MyClass, std::shared_ptr>(“MyClass”, init()) // … .def(“someFunc”, &MyClass::someFunc) ; Obtengo un std::shared_ptr de una variable miembro de otra clase que se expone a través de .def_readonly(…) Cuando bash llamar a […]

¿Por qué PyGILState_Release lanza errores fatales de Python?

CONTESTADO Ok, he resuelto este problema. Todo está en cómo se inicializa el estado del hilo. No es necesario utilizar ReleaseLock en absoluto. Simplemente agregue la llamada InitThreads a la definición de su módulo: BOOST_PYTHON_MODULE(ModuleName) { PyEval_InitThreads(); … } Ok, he intentado diagnosticar este problema durante horas y he analizado lo que parece ser cada […]

Potenciar Python: ¿contenedor polimórfico?

Tengo un método (o función) que devuelve una referencia a una lista de objetos polimórficos: class A { }; class B : public A { }; std::list<boost::shared_ptr >& getList(); ¿Cómo expongo una función de este tipo en boost :: python para que al iterar en la lista en python, vea los diferentes tipos de A […]

¿Cómo funciona la importación con Boost.Python desde dentro de los archivos python?

Estoy utilizando Boost.Python para incrustar un intérprete en mi ejecutable de C ++ y ejecutar algunos scripts preescritos. Lo tengo funcionando para poder llamar a funciones en el archivo de Python, pero el código de Python que quiero usar importa archivos externos y estas importaciones fallan porque “no hay un módulo llamado”. Sin embargo, si […]

Fallo de segmentación al usar boost :: numpy :: ndarray

Recibo lo que creo que es una extraña falla de seguridad cuando bash pasar boost::numpy::ndarray como un argumento: #include #include #include void say_hello(boost::numpy::ndarray& my_array) //void say_hello(int x) This works fine { std::cout<<"Hello"<<std::endl; } BOOST_PYTHON_MODULE(hello_ext) { using namespace boost::python; def("say_hello", say_hello); } Sé que el ejemplo es tonto, pero no debería tener una falla de seguridad […]

¿Necesitas ayuda para comenzar con Boost.Python?

Estoy tratando de construir mi primer ejemplo de Boost.Python. #include #include using namespace boost::python; class Hello { public: std::string greet() { std::cout << "Hello World" << std::endl; } }; BOOST_PYTHON_MODULE(hello) { class_(“Hello”) .def(“greet”, &Hello::greet); } int main() { std::cout << "Boost.Python Test" << std::endl; Hello hello; hello.greet(); return 0; } EDITAR: faltaban los encabezados de […]

¿Cómo exponer buffers de bytes sin procesar con Boost :: Python?

Tengo una biblioteca de C ++ de terceros en la que algunos métodos de clase utilizan buffers de bytes sin procesar. No estoy muy seguro de cómo tratar con Boost :: Python. El encabezado de la biblioteca C ++ es algo así como: class CSomeClass { public: int load( unsigned char *& pInBufferData, int & […]