C++调用python脚本内的函数

#include "Python.h"

int main(int argc, char *argv[])
{
    //初始化python环境
    Py_Initialize();
    if(!Py_IsInitialized()){
        qDebug() << "PYTHON INIT ERROR!";
        return -1;
    }
    PyRun_SimpleString("import sys");

    //设定python脚本目录, 
    PyRun_SimpleString("sys.path.append('/mnt/volume0/')");
    //指定python脚本的文件名,例:test.py,路径在/mnt/volume0/test.py
    PyObject *pModule = PyImport_ImportModule("test");
    if(pModule == NULL){
        qDebug() << "CANNOT FIND PYTHON SCRIPT";
        return -1;
    }
    //指定使用的python脚本的函数
    PyObject *pFunc = PyObject_GetAttrString(pModule, "connect");
    if(pModule == NULL){
        qDebug() << "CANNOT FIND FUNCTION IN PYTHON SCRIPT";
        return -1;
    }
    //指定调用python函数的参数
    PyObject *arg = PyLong_FromLong(10);
    //调用python函数
    PyEval_CallObject(pFunc, arg);

    //调用完函数后,销毁python函数指针
    Py_DECREF(pFunc);
    //销毁python函数环境
    Py_Finalize();
    return 0;
}

 

posted on 2022-04-23 15:36  平ping  阅读(56)  评论(0)    收藏  举报