本站分享大数据、数据分析、数据挖掘、数据库、商业智能(BI)、数据分析师、培训课程考试认证等相关信息!【广告合作】在线联系联系我们数据分析QQ交流群:331864445

C语言调用PYTHON脚本_c语言调用python

python培训 cdadata 408℃ 0评论

C语言调用PYTHON脚本

关键词:c语言调用python c语言中调用python c语言调用python函数 c语言调用脚本
先上python代码:

# call.py
def test():
    print ‘hello world’
def add(a,b):
    return a + b
再上c代码
#include <stdio.h>
#include <stdlib.h>
#include <Python.h>
int main(int argc, char *argv[])
{
    Py_Initialize();
    if(!Py_IsInitialized())
    {
        return -1;
    }
    PyRun_SimpleString(“import sys”);
    PyRun_SimpleString(“sys.path.append(‘./’)”);
    PyObject* pName;
    PyObject* pModule;
    PyObject* pDict;
    PyObject* pFunc;
    pName = PyString_FromString(“call”);
    pModule = PyImport_Import(pName);
    if(!pModule)
    {
        printf(“can’t find call.py”);
        getchar();
        return -1;
    }
    pDict = PyModule_GetDict(pModule);
    if(!pDict)
    {
        return -1;
    }
    {
        pFunc = PyDict_GetItemString(pDict,”test”);
        if(!pFunc || !PyCallable_Check(pFunc))
        {
            printf(“can’t find function [test]”);
            getchar();
            return -1;
        }
        PyObject_CallObject(pFunc,0);
    }
    {
        pFunc = PyDict_GetItemString(pDict,”add”);
        if(!pFunc || !PyCallable_Check(pFunc))
        {
            printf(“can’t find function [test]”);
            getchar();
            return -1;
        }
        PyObject* args = PyTuple_New(2);
        PyTuple_SetItem(args,0,Py_BuildValue(“l”,3));
        PyTuple_SetItem(args,1,Py_BuildValue(“l”,4));
        PyObject *pAdded = PyObject_CallObject(pFunc,args);
        int ret = PyInt_AsLong(pAdded);
        printf(“add value:%d\n”,ret);
        Py_DECREF(args);
    }
    Py_DECREF(pName);
    Py_DECREF(pDict);
    Py_DECREF(pModule);
    Py_Finalize();
    system(“PAUSE”);
    return 0;
}

 

转载请注明:数据分析 » C语言调用PYTHON脚本_c语言调用python

喜欢 (0)or分享 (0)

您必须 登录 才能发表评论!