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的函数相关推荐

  1. c#调用python函数_C#调用python脚本的方法步骤(2种)

    因项目需要,需要使用C#控制台程序执行python脚本,查询各种资料后可以成功调用了,记录一下,以备后面遗忘. 只尝试了两种调用方式,第一种只适用于python脚本中不包含第三方模块的情况,第二种针对 ...

  2. c++调用python原理_C++调用Python浅析

    环境 VS2005Python2.5.4 Windows XP SP3 简述 一般开发过游戏的都知道Lua和C++可以很好的结合在一起,取长补短,把Lua脚本当成类似动态链接库来使用,很好的利用了脚本 ...

  3. 基类指针调用派生类函数_C++ 多态性:虚函数--基类与派生类类型转换(第7章 05)例子问题解析(学习笔记:第8章 05)...

    虚函数[1] 问题:还记得第7章的例子吗[2]? 例7-3 类型转换规则举例 #include <iostream> using namespace std; class Base1 { ...

  4. c++ lambda函数_C++11 之 lambda函数的详细使用

    1. lambda 函数概述 lambda 表达式是一种匿名函数,即没有函数名的函数:该匿名函数是由数学中的λ演算而来的.通常情况下,lambda函数的语法定义为: [capture] (parame ...

  5. c 调用python类_C调用Python解析Excel

    我们先来一些C调用python脚本的代码吧: //一个字符串参数和两个整数参数的例子 void py_a1() { Py_Initialize();  //初始化python模块 if(!Py_IsI ...

  6. boost python异常处理_C++ boost.python折腾笔记

    为了让当年研究生时写的图像处理系统重出江湖起到更大的作用,应研究生导师的意见,对原有的c++框架做了python扩展处理,为了避免遗忘,备注如下: 一.boost 编译 下载boost源码,这里使用b ...

  7. cmd 调用webservice接口_C++ 调用 Webservice gSoap 方法

    大体思路是:使用gsoap生成文件,把生成的相关文件均加载到项目中调用 本文以调用天气的webservice为例子,手把手教你. 步骤一 准备gSOAP工具:将gsoap_2.8.100.zip解压, ...

  8. c语言与python通信_C和Python – 与套接字通信

    我正在尝试使用UNIX域套接字在C程序和 Python脚本之间进行通信. Python脚本通过UNIX域套接字将数据发送到C程序. 这是我的C程序的相关代码: #include #include #i ...

  9. c 调用java包_C#调用java代码(IKVMC)

    参考资料:https://blog.csdn.net/threadroc/article/details/51406587 参考1:http://www.cnblogs.com/Jack-Blog/p ...

最新文章

  1. Native SBS for Android
  2. java中并行_[JAVA] 12. Java中的并行Concurrency
  3. 编程式事务与声明式事务
  4. vue模拟加载更多功能(数据追加)
  5. 计算机术语中bit表示,bit的用法
  6. 南京大学与东南大学计算机学院,南京被“严重低估”的1所大学,拥有8个A+学科,无奈校名太普通...
  7. springboot ElasticSearch 简单的全文检索高亮
  8. Resource Hacker+mysql安装会出现错误“应用程序无法启动因为应用程序的并行配置不正确”...
  9. 运维工具 Ansible 快速入门教程
  10. 如何站在双11的肩膀上 详解阿里云企业级互联网架构
  11. mysql主从复制是拉模式吗,CentOS 7系统配置MySQL的主从复制模式 (Master-Slave Replication)...
  12. 让基础设施代码化更加容易,pulumi 都做了些什么?
  13. 关于金格电子签章的使用问题处理
  14. python单循环_「单循环赛」单循环赛制 - seo实验室
  15. 评委对计算机知识竞赛的提问,评委评分知识竞赛答题软件
  16. linux版百度导航软件,百度导航2019新版
  17. word里边页眉下面的下划线怎么去掉
  18. 135编辑器html点击图片播放音乐,怎么用135编辑器排版 公众号怎么做点击切换图片...
  19. 计算机专业就业现状及指导
  20. 解决华为手机InputMethodManager和GestureBoostManager的内存泄露的问题

热门文章

  1. (74)分析 APC 插入过程 —— KeInsertQueueApc , KiInsertQueueApc
  2. 【Win32汇编】五种寻址方式
  3. 一次内网靶场学习记录
  4. 4、使用PreparedStatement接口实现增,删,改操作(常用)
  5. 利用CSS设置页面的垂直居中效果
  6. 先序序列为a、b、c、d的不同二叉树的个数是多少(卡特兰数)
  7. ACM入门之【线段树】
  8. ACM入门之【离散化】
  9. 2021暑假每日一题 【week2 完结】
  10. 超详细 kafka 入门(最佳实践)