Ejercicio 4 (Extendiendo Python con C++ y Boost)
ejemplo.cpp
#include <boost/python.hpp>
using namespace boost::python;
struct Saludo
{
void set(std::string msg) { this->msg = msg; }
std::string saluda() { return msg; }
std::string msg;
};
BOOST_PYTHON_MODULE(ejemplo_ext)
{
class_<Saludo>("Saludo")
.def("saluda", &Saludo::saluda)
.def("set", &Saludo::set)
;
}
Construyendo un módulo de Python
$ g++ -I/usr/local/include -I/usr/include/python2.6 -fpic -c -o ejemplo_ext.o ejemplo.cpp
$ g++ -shared -Wl,-soname,"ejemplo_ext.so" -L/usr/local/lib ejemplo_ext.o -lboost_python -fpic -o ejemplo_ext.so
Probando el módulo de Python
$ python
Python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ejemplo_ext
>>> Sonia = ejemplo_ext.Saludo()
>>> Sonia.set("Epale")
>>> Sonia.saluda()
'Epale'
>>>
Carlos Gustavo Ruiz
CC BY-NC-SA 3.0