QT C++中直接调用python接口

本文记录在Qt中直接调用python接口的方式

python文件,testList.py如下:

#!/usr/bin/python

def testlist():
  a = ['tomsun', 'wenfang', 'ada', 'lily'] #当然列表中可以还包含列表
  return a


C++中代码如下:

#include

void testList()
{
  Py_Initialize();
  PyObject *pModule = NULL;
  PyObject *pFunc = NULL;
  PyObject *pReturn = NULL;
  int i = 0;


  PyRun_SimpleString("import sys");
  PyRun_SimpleString("sys.path.append('./')"); //这个是python源文件所在的路径,比如,你的

//python路径在/tmp/目录下,就修改为PyRun_SimpleString("sys.path.append('/tmp/')")
  pModule = PyImport_ImportModule("testList");
  pFunc = PyObject_GetAttrString(pModule,"testlist");
  pReturn = PyEval_CallObject(pFunc, NULL);
  cout<<"list size:"<< PyList_Size(pReturn)<

  for (i=0; i < PyList_Size(pReturn); i++)
  {
    PyObject *o = PyList_GetItem(pReturn, i);
    if (PyString_Check(o)) //如果列表中还存在包含列表的可能,请调用PyList_Check
      cout<<"list"<

  }
}


然后在Qt中的工程pro文件中,加入如下信息:

INCLUDEPATH += -I /usr/include/python*/

LIBS += -L /usr/lib/python*/ -lpython* 

上面的‘*’代表python对应的版本



你可能感兴趣的:(QT C++中直接调用python接口)