c调用python函数_C调用Python的函数
1 /*2 module: Python腳步的模塊名3 function: 要調用的函數名4 format: 傳遞給Py_VaBuildValue函數的可變參數模板5 */6 intPyCall(constchar*module,constchar*function,constchar*format, ... )7 {8 PyObject*pMod=NULL;9 PyObject*pFunc=NULL;10 PyObject*pParm=NULL;11 PyObject*pRetVal=NULL;12 13 //導入模塊14 if(!(pMod=PyImport_ImportModule(module) ) ){15 return-1;16 }17 //查找函數18 if(!(pFunc=PyObject_GetAttrString(pMod, function) ) ){19 return-2;20 }21 22 //創建參數23 va_list vargs;24 va_start( vargs, format );25 pParm=Py_VaBuildValue( format, vargs );26 va_end(vargs);27 28 //函數調用29 pRetVal=PyEval_CallObject( pFunc, pParm);30 31 //假定返回值為整形32 intret;33 PyArg_Parse( pRetVal,"i",&ret );34 returnret;35 }36 37 intmain(intargc,char*argv[])38 {39 Py_Initialize();40 41 /*這做個簡單的說明42 ** format參數用()擴起來是表示元組的意思。元組中的個數對應Python腳本中的參數。43 ** 因為fun,fun1,fun2函數的參數個數分別是 0,1,2,所以,元組中的個數必須為0,1,2,不然調用將失44 ** 敗。當然,元組中的每個元素都是可以為任意的類型,比如:45 ** PyCall( "pytest", "fun2", "( i,{s:s,s:s})", 2, "name", "linxr", "age", "25" );46 */47 printf("ret = %d\n", PyCall("pytest","fun","()");48 printf("ret = %d\n", PyCall("pytest","fun1","(i)",12);49 printf("ret = %d\n", PyCall("pytest","fun2","(is)",12,"12");50 51 Py_Finalize();52 53 return0;54 }
總結
以上是生活随笔為你收集整理的c调用python函数_C调用Python的函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python while函数_详解pyt
- 下一篇: 综合评价模型的缺点_视频/图像质量评价综