c调用python怎么释放
发布时间:2026-05-11 10:07:03

c调用Python步骤:
1、设置编译环境实际上是设置Python的头文件和库文件目录
2、Python初始化解释器:
Py_Initialize();
3、调用Python
4、释放资源
Py_Finalize();
实例:
/*
module:模块名Python脚步
function:要调用的函数名
format:可变参数模板传输给Py_VabuildValue函数
*/
intPyCall(constchar*module,constchar*function,constchar*format,...)
{
PyObject*pMod=NULL;
PyObject*pFunc=NULL;
PyObject*pParm=NULL;
PyObject*pRetVal=NULL;
//导入模块
if(!(pMod=PyImport_ImportModule(module))){
return-1;
}
///搜索函数
if(!(pFunc=PyObject_GetAttrString(pMod,function))){
return-2;
}
///创建参数
va_listvargs;
va_start(vargs,format);
pParm=Py_VaBuildValue(format,vargs);
va_end(vargs);
///函数调用
pRetVal=PyEval_CallObject(pFunc,pParm);
///假设返回值为整形手术
intret;
PyArg_Parse(pRetVal,"i",&ret);
returnret;
}
intmain(intargc,char*argv[])
{
Py_Initialize();
/*这是一个简单的解释
**()扩展format参数意味着元组。Python脚本中的参数对应于元组中的个数。Python脚本中的参数对应于元组中的个数。
**由于fun、fun1、fun2函数的参数数分别为0、1、2,元组中的数量必须为0、1、2,否则调用将丢失
**败。当然,元组中的每一个元素都可以是任何类型,例如:
**PyCall("pytest","fun2","(i,{s:s,s:s})",2,"name","linxr","age","25");
*/
printf("ret=%d\n",PyCall("pytest","fun","()");
printf("ret=%d\n",PyCall("pytest","fun1","(i)",12);
printf("ret=%d\n",PyCall("pytest","fun2","(is)",12,"12");
Py_Finalize();
return0;
}请关注Python视频教程栏目,了解更多Python知识。
下一篇 返回列表
