Следующий пример демонстрирует использование импорта и exec для определения функции в Python, а затем вызов его из C++.
#include<iostream>#include<string>usingnamespaceboost::python;voidgreet(){// Retrieve the main module.objectmain=import("__main__");// Retrieve the main module's namespaceobjectglobal(main.attr("__dict__"));// Define greet function in Python.objectresult=exec("def greet(): \n"" return 'Hello from Python!' \n",global,global);// Create a reference to it.objectgreet=global["greet"];// Call it.std::stringmessage=extract<std::string>(greet());std::cout<<message<<std::endl;}
Вместо того, чтобы вставлять скрипт python в строку, мы также можем хранить его в файле.
defgreet():return'Hello from Python!'
И вместо этого выполнить это.
// ...// Load the greet function from a file.objectresult=exec_file(script,global,global);// ...}
Статья Chapter 6. Embedding раздела Boost.Python Reference Manual Boost.Python Reference Manual может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.