成都创新互联网站制作重庆分公司

C++项目中怎么调用python函数-创新互联

C++项目中怎么调用python函数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

为大丰等地区用户提供了全套网页设计制作服务,及大丰网站建设行业解决方案。主营业务为成都做网站、网站制作、大丰网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

代码如下,分别演示直接执行python语句、无返回无参数函数调用、返回单参数函数调用。返回多参数函数调用:


#include 
  #include 
  using namespace std;
  //执行python命令
  void ExecPythonCommand()
  {
  //直接执行 

  PyRun_SimpleString("from time import time,ctime\n"
  "print 'Today is',ctime(time())\n");
  }
  //调用无参数函数
  void InvokeNoParm()
  {
  PyObject* pMod = NULL;
  PyObject* pFunc = NULL;
  //导入模块
  pMod = PyImport_ImportModule("Life");
  if(pMod)
  {
  //获取函数地址
  pFunc = PyObject_GetAttrString(pMod, "a");
  if(pFunc)
  {
  //函数调用
  PyEval_CallObject(pFunc, NULL);
  }
  else
  {
  cout << "cannot find function a" << endl;
  }
  }
  else
  {
  cout << "cannot find Life.py" << endl;
  }
  }

//调用一参数函数


void InvokeWith2Parm()
  {
  PyObject* pMod = NULL;
  PyObject* pFunc = NULL;
  PyObject* pParm = NULL;
  PyObject* pRetVal = NULL;
  int   iRetVal = 0;
  //导入模块
  pMod = PyImport_ImportModule("FuncDef");
  if(pMod)
  {
  pFunc = PyObject_GetAttrString(pMod, "square");
  if(pFunc)
  {
  //创建参数
  pParm = Py_BuildValue("(i)", 5);
  //函数调用
  pRetVal = PyEval_CallObject(pFunc, pParm);
  //解析返回值
  PyArg_Parse(pRetVal, "i", &iRetVal);
  cout << "square 5 is: " << iRetVal << endl;
  }
  else
  {
  cout << "cannot find function square" << endl;
  }
  }
  else
  {
  cout << "cannot find FuncDef.py" << endl;
  }
  }

//调用多参数函数

void InvokeWith3Parm()
  {
  PyObject* pMod = NULL;
  PyObject* pFunc = NULL;
  PyObject* pParm = NULL;
  PyObject* pRetVal = NULL;
  int   iRetVal = 0;
  //导入模块
  pMod = PyImport_ImportModule("add");
  if(pMod)
  {
  pFunc = PyObject_GetAttrString(pMod, "add");
  if(pFunc)
  {
  //创建两个参数
  pParm = PyTuple_New(2);
  //为参数赋值
  PyTuple_SetItem(pParm, 0, Py_BuildValue("i",2000));
  PyTuple_SetItem(pParm, 1, Py_BuildValue("i",3000));
  //函数调用
  pRetVal = PyEval_CallObject(pFunc, pParm);
  //解析返回值
  PyArg_Parse(pRetVal, "i", &iRetVal);
  cout << "2000 + 3000 = " << iRetVal << endl;
  }
  else
  {
  cout << "cannot find function square" << endl;
  }
  }
  else
  {
  cout << "cannot find add.py" << endl;
  }
  }
int main(int argc, char* argv[])
  {
  Py_Initialize(); //python 解释器的初始化
  ExecPythonCommand();
  InvokeNoParm();
  InvokeWith2Parm();
  InvokeWith3Parm();
  Py_Finalize();  // 垃圾回收、清除导入库
  return 0;
  }

看完上述内容,你们掌握C++项目中怎么调用python函数的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


网页标题:C++项目中怎么调用python函数-创新互联
URL标题:http://cxhlcq.com/article/pjcci.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部