- 4
- 0
- 约2.32千字
- 约 6页
- 2016-10-16 发布于重庆
- 举报
6c語言教程
代码如下,分别演示直接执行python语句、无返回无参数函数调用、返回单参数函数调用。返回多参数函数调用:
#include Python.h
#include iostream
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 InvokeWith1Parm()
{
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 InvokeWith2Parm()
{
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(); //pyt
原创力文档

文档评论(0)