c++调用python实现

来源:互联网 发布:开源cms php 编辑:程序博客网 时间:2024/06/15 21:30

本文使用boost库提供的python模块实现c++对python代码的调用。在本文代码中,省略了对python虚拟机的初始化。

场景描述:用python语言实现了一个方法test(param),方法所在脚本文件名是test_python.py(编译成二进制的test_python.pyc也可以),需要在c++中执行该方法。

方法一:直接执行(python::exec)导入语句(import),将test方法导入。test_python.py所在目录需要写在环境变量PYTHON_PATH中。

python::object m_main_module;python::object m_main_namespace;m_main_module=python::object(python::handle<(                       python::borrowed(PyImport_AddModule("__main__"))));m_main_namespace = m_main_module.attr("__dict__");//执行导入语句python::exec( "from test_python import * \n" , m_main_namespace ,                       m_main_namespace );//获取python的test方法对象python::object python_func = m_main_namespace["test"];//调用test方法,输入参数python_func("okokok") ;

方法二:直接执行(python::exec)脚本代码。将test_python.py的内容读入内存,放在变量file中。和方法一相比,只有这一句不同。

python::exec( file.c_str() , m_main_namespace , m_main_namespace );
0 0
原创粉丝点击