[C++-sig] using extract with embedded boost::python
Stefan Seefeld
seefeld at sympatico.ca
Mon Jun 4 15:44:39 CEST 2007
Simon Pickles wrote:
> Thanks Stefan.
>
> On consulting libs/python/tests/exec.cpp I got the extract to work, with
> simple data types, like int and std::string.
>
> How can I do the same for a function. I tried:
>
> // C++
> python::dict global;
> python::object result = python::exec_file("myPython.py", global, global)l
>
> python::object greet = global["greet"];
> std::string message = python::extract<std::string>(greet());
>
>
> // MYPYTHON.PY
> def greet(self):
> return "hello, world!"
>
>
> This gives an error. Its the example from the documentation.
What error ?
I'm not exactly sure about the above: greet() returns a new object, and
extract<std::string> returns something (a proxy ?) which is implicitly convertible
to a std::string. Is it possible that the lifetime of the object to be extracted
from is slightly shorter than that of the proxy ? David ?
Does it make a difference if you store the result of greet() in a local object
and extract from that ?
> Then, can I also pass parameters?
pass to what ? The function call ? That's all covered in the tutorial / manual.
> As for PyErr_Fetch, since I am not using a console application (win32),
> I don't know what to do with PyErr_Fetch or PyErr_Print! Sorry, not big
> on console apps!
I don't quite understand the relation to "console app". If your platform doesn't
have support for stdout / stderr, you surely have other means to display text.
Regards,
Stefan
--
...ich hab' noch einen Koffer in Berlin...
More information about the Cplusplus-sig
mailing list