[Boost.Python] Как вернуть значение из python-овского скрипт
От: Бабошин Андрей Германия http://andreybaboshin.livejournal.com/
Дата: 15.08.07 14:34
Оценка:
Добрый день.

Из C++ кода вызываю питиновский скрипт:

object main_module((handle<>(borrowed(PyImport_AddModule("__main__")))));
object main_namespace = main_module.attr("__dict__");
try {
object result = exec(script.c_str (), main_namespace, main_namespace);
TestResult res = extract<TestResult> (result);
std::cout << res.logStr << std::endl;
} catch ( error_already_set const & ) {
std::cout << "error!" << std::endl;
assert(PyErr_Occurred());
PyErr_Print();
}


python-овский скрипт:

import testCore
test = testCore.TestCore()
test.run()


testCore — C++-класс, который забинден в питон.
Его метод run возвращает структуру TestResult, которая также забиндина в питон.

Но вызов данного C++-кода приводит к ошибке:

TypeError: No registered converter was able to produce a C++ rvalue of type TestResult from this Python object of type NoneType


Как мне в C++-коде получить результат выполнения данного скрипта?

Спасибо.
Re: [Boost.Python] Как вернуть значение из python-овского ск
От: IROV..  
Дата: 15.08.07 15:10
Оценка:
Здравствуйте, Бабошин Андрей, Вы писали:

БА>Добрый день.


БА>Из C++ кода вызываю питиновский скрипт:


БА>
БА>object main_module((handle<>(borrowed(PyImport_AddModule("__main__")))));
БА>object main_namespace = main_module.attr("__dict__");
БА>try {
БА>object result = exec(script.c_str (), main_namespace, main_namespace);
БА>TestResult res = extract<TestResult> (result);
БА>std::cout << res.logStr << std::endl;
БА>} catch ( error_already_set const & ) {
БА>std::cout << "error!" << std::endl;
БА>assert(PyErr_Occurred());
БА>PyErr_Print();
БА>}
БА>


БА>python-овский скрипт:


БА>
БА>import testCore
БА>test = testCore.TestCore()
БА>test.run()
БА>


БА>testCore — C++-класс, который забинден в питон.

БА>Его метод run возвращает структуру TestResult, которая также забиндина в питон.

БА>Но вызов данного C++-кода приводит к ошибке:


БА>
БА>TypeError: No registered converter was able to produce a C++ rvalue of type TestResult from this Python object of type NoneType
БА>


БА>Как мне в C++-коде получить результат выполнения данного скрипта?


БА>Спасибо.


Покожи бинд этого класса TestResult возможно нету конструктора )
я не волшебник, я только учусь!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.