这篇文章主要介绍c调用python的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
平鲁网站建设公司创新互联,平鲁网站设计制作,有大型网站制作公司丰富经验。已为平鲁数千家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的平鲁做网站的公司定做!
c调用Python的步骤:
1、设置编译环境,其实就是设置Python的头文件和库文件目录
2、初始化Python解释器:
Py_Initialize();
3、调用Python
4、释放资源
Py_Finalize();
实例:
/* module: Python脚步的模块名 function: 要调用的函数名 format: 传递给Py_VaBuildValue函数的可变参数模板 */ int PyCall( const char * module, const char * function, const char *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_list vargs; va_start( vargs, format ); pParm = Py_VaBuildValue( format, vargs ); va_end(vargs); //函数调用 pRetVal = PyEval_CallObject( pFunc, pParm); //假定返回值为整形 int ret; PyArg_Parse( pRetVal, "i", &ret ); return ret; } int main(int argc, char* argv[]) { Py_Initialize(); /* 这做个简单的说明 ** format参数用()扩起来是表示元组的意思。元组中的个数对应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(); return 0; }
以上是c调用python的方法的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!