[C++-sig] How to get output from python embedded in VC++
Stefan Seefeld
stefan at seefeld.name
Sun Jul 23 11:06:38 EDT 2017
On 23.07.2017 03:15, Jian wrote:
>
> Hi Stefan,
>
> I still got a assertion failed at Py_Initialize(). Below is the message.
>
> Program: C:\Python35\python35_d.dll
> File: ..\Objects\object.c
> Line: 84
> Expression: (op->_ob_prev == NULL) == (op->_ob_next == NULL)
And you get this output from the Py_Initialize() call itself ?? I have
no idea how this could happen. I have very little experience with
Windows, and so am not really able to help debug this. My first guess
would be that you are linking to the wrong library. (I see
'python35_d.dll'. What happens if you link to 'python35.dll', i.e. the
non-debug version ?)
>
> I also pasted mo code below. This function is invoked by a button
> click function. No other codes around it.
>
> int runBoostPython()
> {
> Py_Initialize();
> try {
> //boost::python::object main_module =
> // boost::python::import("__main__");
> //boost::python::object main_namespace =
> // main_module.attr("__dict__");
> boost::python::dict main_namespace;
>
> boost::python::object ignored = exec_file("test1.py",
> main_namespace, main_namespace);
>
> std::wstring output =
> boost::python::extract<std::wstring>(main_namespace["return_value"]);
I'm not sure it's possible to use `extract` with std::wstring. At least
I have never used it with that. (What encoding is your string using ?
How should it be converted to a wide string ?)
>
> }
> catch (boost::python::error_already_set) {
> PyErr_Print();
> }
> return 0;
> }
>
> Please help check it.
>
> Thanks & Best Regards,
>
> John.
Regards,
Stefan
--
...ich hab' noch einen Koffer in Berlin...
More information about the Cplusplus-sig
mailing list