$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: ALEX NG (alex_at_[hidden])
Date: 2007-08-20 13:02:17
HI
I would like to run a C++ program that can call a python code which is 
stored as  a *.py.  so that if I make any changes inside *.py, my C++ 
program can get the results.
In my code, I have a class CppClass and an object created from this class 
called cpp.
How can I pass this object to a *.py file and get the new results?
class CppClass {
public:
  int getNum() {
    return 8;
  }
 // int getNum2(){//
      //return 12;
  //}
};
#include "boost/python.hpp"
using namespace boost::python;
int main( int argc, char ** argv ) {
  try {
    Py_Initialize();
    object main_module((
      handle<>(borrowed(PyImport_AddModule("__main__")))));
    object main_namespace = main_module.attr("__dict__");
      //      main_namespace["cpp"] = ptr(&cpp);
      main_namespace["CppClass"] = class_<CppClass>("CppClass")
                               .def("getNum",&CppClass::getNum);
      CppClass cpp;
      cpp.getNum();
      main_namespace["multiply"] = ptr(&cpp);
handle<> ignored(( PyRun_String(  "print multiply.getNum() \n",
                                      Py_file_input,
                                      main_namespace.ptr(),
                                      main_namespace.ptr() ) ));
  } catch( error_already_set ) {
    PyErr_Print();
  }
}
multiply.py
def multiply(a,b):
    global c
    print "Will compute", a, "times", b
    c=c+(a*b)
    return c