从c++;使用boost.python

从c++;使用boost.python,python,c++,boost-python,Python,C++,Boost Python,我有一个python脚本script.py包含一个函数hello,该函数只打印hello World。我想用Boost Python模块在C++程序中调用这个函数。以下是我迄今为止所做的工作,工作正常,并验证了我的设置是否正常工作。有人能指导我如何在C++程序中执行Python脚本中的函数吗? #include <boost/python.hpp> #include <cstdlib> // setenv int main() { // Allow Python to

我有一个python脚本
script.py
包含一个函数
hello
,该函数只打印
hello World
。我想用Boost Python模块在C++程序中调用这个函数。以下是我迄今为止所做的工作,工作正常,并验证了我的设置是否正常工作。有人能指导我如何在C++程序中执行Python脚本中的函数吗?
#include <boost/python.hpp>
#include <cstdlib> // setenv
int main()
{
  // Allow Python to load modules from the current directory.
  //setenv("PYTHONPATH", ".", 1);
  // Initialize Python.
  Py_Initialize();

  namespace python = boost::python;
  try
  {
    python::object main_module = python::import("__main__");
    python::object main_namespace = main_module.attr("__dict__");

    python::object print = python::exec("from time import time,ctime\n"
                     "print 'Today is',ctime(time())\n", main_namespace);

  }
  catch (const python::error_already_set&)
  {
    PyErr_Print();
    return 1;
  }

  // Do not call Py_Finalize() with Boost.Python.
}
#包括
#包括//setenv
int main()
{
//允许Python从当前目录加载模块。
//setenv(“蟒蛇”,1);
//初始化Python。
Py_初始化();
名称空间python=boost::python;
尝试
{
python::object main_module=python::import(“_main__”);
python::object main_namespace=main_module.attr(“uu dict_uu”);
python::object print=python::exec(“从导入时开始,ctime\n”
“打印'今天是',ctime(time())\n',主名称空间);
}
catch(constpython::error\u已经\u集&)
{
PyErr_Print();
返回1;
}
//不要使用Boost.Python调用Py_Finalize()。
}

python::exec(“hello()”,main\u名称空间)
?您甚至还没有尝试过。试试看,这就是我修改过的代码现在的样子:
python::object my_python\u class\u module=python::import(“脚本”)
python::exec(“hello()”,主名称空间)
但是我得到的错误是:NameError:name'hello'没有定义也许你想
boost::import
你的模块,而不是
“\uuuuu main\uuuuu”
,或者
python::exec(“from script.py import hello”)
或者其他什么。