[C++-sig] Re: Creating an instance of a Python class in C++: PyRun_String?
Bjorn Pettersen
BPettersen at NAREX.com
Fri Nov 15 00:23:17 CET 2002
> From: Dirk Gerrits [mailto:dirk at gerrits.homeip.net]
[...]
> Upon further RTFMing on start tokens, I tried this:
>
> // Create and use an instance of the Python derived class
> Base* py = python::extract<Base*>(
> PyRun_String("PythonDerived()\n", Py_eval_input, 0, 0));
> py->f();
I don't know what's happening whith your extract, but you need to define
your previous statements in a module/namespace and feed this to
PyRun_String, e.g.:
PyObject* mainmod = PyImport_AddModule("__main__");
ns = PyModule_GetDict(mainmod);
Py_INCREF(ns);
// add your definitions to the namespace
PyObject* x = PyRun_String("..your classdef here..",
Py_file_input, ns, ns);
Py_XDECREF(x); // it doesn't contain anything useful
PyObject* res = PyRun_String("PythonDerived()\n", Py_eval_input, ns,
ns);
hth,
-- bjorn
More information about the Cplusplus-sig
mailing list