刚好几个月前做过,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. python编写登录接口

    要求: 输入用户名密码     认证成功显示欢迎信息 输错三次以后锁定 代码如下: # Author:YKwhile(True): select=input('请问是注册还是登录') if selec ...

  2. (转)CocoaPods

    本文转自http://nshipster.cn/cocoapods/ 文明是建立在道路,桥梁,运河,下水道,管线,电线和光纤这些基础设施之上的.只要设计和施工得当,它们可以帮助社会成倍的发展. 唯一的 ...

  3. B1023 组个最小数 (20分)

    B1023 组个最小数 (20分) 给定数字 0-9各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 ...

  4. Codeforces Round #459 (Div. 2):D. MADMAX(记忆化搜索+博弈论)

    D. MADMAX time limit per test1 second memory limit per test256 megabytes Problem Description As we a ...

  5. 动态规划:HDU1224-Free DIY Tour

       Free DIY Tour Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  6. POJ3436------ACM Computer Factory

    题目链接 ACM Computer Factory Description As you know, all the computers used for ACM contests must be i ...

  7. Redis实现之对象(二)

    列表对象 列表对象的编码可以是ziplist或者linkedlist,ziplist编码的列表对象使用压缩列表作为底层实现,每个压缩列表节点(entry)保存了一个列表元素.举个栗子,如果我们执行RP ...

  8. ios开发学习笔记002-运算符

    运算符 C语言有34种运算符,常见的有加减乘除. 算术运算符 1.加 10+2 2.减 20-2 3.乘 12*2 4.除 10/2 5.取余 10%3 = 1; 10%-3 = 1; -10%3 = ...

  9. Python学习-day16-DOM

    文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM把 ...

  10. Spring boot 上传文件大小限制

    1.spring boot 1.x 版本 application.properties 文件中 位置在(resources下) spring.http.multipart.maxFileSize = ...