刚好几个月前做过,C++ 函数里面先加载python 脚本,再调用 里面的 def 函数,我把代码贴出来,你在main 函数里面,调用getDataByScript 函数,另外相同目录下放一个 fuckTest.py ,我是centos6.7 
  编译 
g++ -o test test.cpp -lpython2.7  
  
  
callPython.h 
#include<Python.h> 
#include<string> 
using namespace std; 
  
char* getDataByScript(const char* moduleName,int& bufferSize,int& errInfo) 

     errInfo = 0; 
     bufferSize = 0; 
     Py_Initialize(); 
     if(!Py_IsInitialized()) 
     { 
         errInfo = 1; 
         return NULL; 
     } 
     PyRun_SimpleString("import sys"); 
     PyRun_SimpleString("sys.path.insert(0,'./')"); 
     //PyRun_SimpleString("print sys.path"); 
     PyObject* pName = PyString_FromString(moduleName); 
     PyObject* pModule = PyImport_Import(pName); 
     if(!pModule) 
     { 
         printf("can't import error\n"); 
         errInfo = 2; 
         return NULL; 
     } 
     PyObject* pDict = PyModule_GetDict(pModule); 
     if(!pDict) 
     { 
         errInfo = 3; 
         return NULL; 
     } 
  
     PyObject* pFunc = PyDict_GetItemString(pDict,"callFuncNoArgs"); 
     if(!pFunc || !PyCallable_Check(pFunc)) 
     { 
         errInfo = 4; 
         return NULL; 
     } 
     //PyObject* pArgs = PyTuple_New(2); 
     //PyTuple_SetItem(pArgs,0,Py_BuildValue("l",100)); 
     //PyTuple_SetItem(pArgs,1,Py_BuildValue("l",200)); 
     PyObject* res = PyObject_CallObject(pFunc,NULL); 
     if(!PyString_Check(res)) 
     { 
         errInfo = 5; 
         return NULL; 
     } 
    else 
     { 
         bufferSize = int(PyString_Size(res)); 
         return (char*)PyString_AsString(res); 
     } 

  
  
test.cpp 
  
#include <iostream> 
#include"callPython.h" 
using namespace std; 
int main() 

     int size =0; 
     int errInfo = 0; 
     getDataByScript("fuckTest",size,errInfo); 
     return 0; 

  
fuckTest.py 
  
def callFuncNoArgs(): 
     print "test.py func called !!!" 
     return "fuck"

C 语言调用python 脚本函数的更多相关文章

  1. vs2013下c++调用python脚本函数 出现的一些问题总结

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9530834.html 首先是配置: 使用VS2013创建工程. 将libs中的python27 ...

  2. C#调用Python脚本的简单示例

    C#调用Python脚本的简单示例 分类:Python (2311)  (0)  举报  收藏 IronPython是一种在 .NET及 Mono上的 Python实现,由微软的 Jim Huguni ...

  3. 通过Java调用Python脚本

    在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...

  4. PHP 调用Python脚本

    上次做用户反馈自动翻译,写了个python脚本,将日文的用户反馈翻译成中文,效果虽然可以,但其它不懂python的童鞋就没法使用了,所以搭了个web服务,让其他人可以通过网页访问查询.使用的是apac ...

  5. C++中调用Python脚本

    C++中调用Python脚本的意义就不讲了,至少你可以把它当成文本形式的动态链接库, 需要的时候还可以改一改,只要不改变接口, C++的程序一旦编译好了,再改就没那么方便了 先看Python的代码 代 ...

  6. (转)java调用python脚本

    这篇博客旨在吐血分享今天遇到的java调用python脚本遇到的坑,折腾了3个多小时终于可以跑通了,代码超级短,但网上的好多资料都是抄来抄去的,很少有能够直接跑通的,尤其是针对你的python文件中用 ...

  7. Java调用Python脚本并获取返回值

    在Java程序中有时需要调用Python的程序,这时可以使用一般的PyFunction来调用python的函数并获得返回值,但是采用这种方法有可能出现一些莫名其妙的错误,比如ImportError.在 ...

  8. shell调用python脚本,并且向python脚本传递参数

    1.shell调用python脚本,并且向python脚本传递参数: shell中: python test.py $para1 $para2 python中: import sys def main ...

  9. C++中调用Python脚本(转载)

    转载▼ 标签: 杂谈 C++中调用Python脚本的意义就不讲了,至少你可以把它当成文本形式的动态链接库,需要的时候还可以改一改,只要不改变接口, C++的程序一旦编译好了,再改就没那么方便了先看Py ...

随机推荐

  1. nodejs源码—初始化

    概述 相信很多的人,每天在终端不止一遍的执行着node这条命令,对于很多人来说,它就像一个黑盒,并不知道背后到底发生了什么,本文将会为大家揭开这个神秘的面纱,由于本人水平有限,所以只是讲一个大概其,主 ...

  2. pandas知识点(基本功能)

    1.重新索引 如果reindex会根据新索引重新排序,不存在的则引入缺省: In [3]: obj = Series([4.5,7.2,-5.3,3.6], index=["d", ...

  3. 牛课第二次多校I

    链接:https://www.nowcoder.com/acm/contest/140/I来源:牛客网 题目描述 White Cloud has a square of n*n from (1,1) ...

  4. firewall-cmd 防火墙命令详解 及 TCP Wrappers

    firewall-cmd 常用参数及作用 参数 作用 --get-default-zone 查询默认的区域名称 --set-default-zone=<区域名称> 设置默认的区域,使其永久 ...

  5. J.U.C 系列之 Tools

    JDK 5.0 开始,java并发大师Doug lea 为我们带来了更高效更应用的java并发API Java.util.concurrent包,简称J.U.C J.U.C 体系由如下五个知识结构构成 ...

  6. WEBs

    http://www.cnblogs.com/wupeiqi/articles/5341480.html 请求方式8种: 1.GET:请求指定页面信息,并返回实体 2.POST:向指定资源提交数据进行 ...

  7. Django Rest Framework threoy

    rest_framework源码分析: 1.as_view() 2.父类的as_view() view = super(APIView, cls).as_view(**initkwargs) 3.vi ...

  8. linux学习(四) -- supervisor守护进程

      supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启.   1.安装 apt-get install ...

  9. 如何在Linux下使用Rsync

    如何在Linux下使用Rsync 吐槽 昨天对scp进行总结之后看到最后有说到Rsync,俗语有云:好奇心害死猫.抱着学习的态度将Rsync给找了出来,然后进行了一些简单的学习.下面介绍一些个常用的命 ...

  10. Java之基于Apache jar包的FTPClient上传

    首先,准备工作: http://pan.baidu.com/s/1dD1Utwt 从以上链接下载Apache的jar包,并将其复制到工程的WEB-INF下的lib包里,在此,准备工作就已经完成了. 具 ...