最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • c调用python怎么释放

    正文概述    2020-08-14   230

    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;
    }

    更多Python知识请关注Python视频教程栏目。


    下载网 » c调用python怎么释放

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元