Hi,
On Wed, Jun 24, 2009 at 7:52 AM, Christopher Schramm
<[email protected]> wrote:
>
> Stefan Seefeld wrote:
> > An alternative is not to use BOOST_PYTHON_MODULE at all, but set up
> > converters in ordinary C++ code. In the following I set up a Python
> > interpreter in my main application, inject a (C++) base class, run a
> > Python script that adds a derived class, then instantiate and run that
> > derived class from C++ code. I this may just be what you want:
>
> Sure. That's what I'm doing (just within a submodule below main). But in
> your example - how do get simple c++ functions into the python scope
> which aren't members of any class? That's my problem.
This seems to work:
#include <boost/python.hpp>
#include <iostream>
namespace bp = boost::python;
void myfunction() {
std::cout << "Hello world!\n";
}
int main(int argc, char* argv[]) {
Py_Initialize();
bp::object main = bp::import("__main__");
bp::object global = main.attr("__dict__");
bp::object function = bp::object(myfunction);
global["function"] = function;
bp::exec("function()", global, global);
return 0;
}
Is this what you wanted?
Boost python's def returns void, which is natural I think, since you
can't assign to the "result" of def in python either.
Hope this helps,
Thomas
_______________________________________________
Cplusplus-sig mailing list
[email protected]
http://mail.python.org/mailman/listinfo/cplusplus-sig