Interfacing C++ and Python

From LPTMS Wiki
Revision as of 11:36, 14 October 2011 by Ullmo (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

References

Quick start

  • command line under linux
:> g++ -shared myfile.cpp -I/usr/include/python2.6 -lboost_python -o myfile.so -fPIC


This compiles the basic example below:

<source lang="cpp"> // myfile.h struct World {

 void set(std::string msgin) {this->msg=msgin ;}
 std::string greet() {return msg ;}
 std::string msg;

} ; </source>

<source lang="cpp"> // myfile.cpp #include <boost/python.hpp>

  1. include "myfile.h"

using namespace boost::python;

BOOST_PYTHON_MODULE(hello) {

 def("greet", greet, "return one of three parts of a greeting");
 class_<World>("World")
   .def("greet",&World::greet)
   .def("set",&World::set)
   ; 

} </source>

which runs as <source lang="py"> In [1]: import hello In [2]: planet = hello.World() In [3]: planet.set('howdy') In [4]: planet.greet() Out[4]: 'howdy' </source>