C 语言调用python 脚本函数
刚好几个月前做过,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 脚本函数的更多相关文章
- vs2013下c++调用python脚本函数 出现的一些问题总结
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9530834.html 首先是配置: 使用VS2013创建工程. 将libs中的python27 ...
- C#调用Python脚本的简单示例
C#调用Python脚本的简单示例 分类:Python (2311) (0) 举报 收藏 IronPython是一种在 .NET及 Mono上的 Python实现,由微软的 Jim Huguni ...
- 通过Java调用Python脚本
在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...
- PHP 调用Python脚本
上次做用户反馈自动翻译,写了个python脚本,将日文的用户反馈翻译成中文,效果虽然可以,但其它不懂python的童鞋就没法使用了,所以搭了个web服务,让其他人可以通过网页访问查询.使用的是apac ...
- C++中调用Python脚本
C++中调用Python脚本的意义就不讲了,至少你可以把它当成文本形式的动态链接库, 需要的时候还可以改一改,只要不改变接口, C++的程序一旦编译好了,再改就没那么方便了 先看Python的代码 代 ...
- (转)java调用python脚本
这篇博客旨在吐血分享今天遇到的java调用python脚本遇到的坑,折腾了3个多小时终于可以跑通了,代码超级短,但网上的好多资料都是抄来抄去的,很少有能够直接跑通的,尤其是针对你的python文件中用 ...
- Java调用Python脚本并获取返回值
在Java程序中有时需要调用Python的程序,这时可以使用一般的PyFunction来调用python的函数并获得返回值,但是采用这种方法有可能出现一些莫名其妙的错误,比如ImportError.在 ...
- shell调用python脚本,并且向python脚本传递参数
1.shell调用python脚本,并且向python脚本传递参数: shell中: python test.py $para1 $para2 python中: import sys def main ...
- C++中调用Python脚本(转载)
转载▼ 标签: 杂谈 C++中调用Python脚本的意义就不讲了,至少你可以把它当成文本形式的动态链接库,需要的时候还可以改一改,只要不改变接口, C++的程序一旦编译好了,再改就没那么方便了先看Py ...
随机推荐
- Python中的bytes
bytes_lst = [ ('创建bytes',), ('bytes可哈希',), ('编码与解码',), ('常见编码类型',), ('ord() 与 chr()',), ] 创建bytes &g ...
- Bomb HDU - 3555 (数位DP)
Bomb HDU - 3555 (数位DP) The counter-terrorists found a time bomb in the dust. But this time the terro ...
- Appium运行时没有启动activity的权限:A new session could not be created.(Original error: Permission to start activity denied)
小白搞appium,遇到启动不了activity的问题: 查找解决方案说是跟AndroidManifest.xml有关系,参考:https://github.com/appium/appium/iss ...
- 13,scrapy框架的日志等级和请求传参
今日概要 日志等级 请求传参 如何提高scrapy的爬取效率 一.Scrapy的日志等级 - 在使用scrapy crawl spiderFileName运行程序时,在终端里打印输出的就是scrapy ...
- qt4.8.5 qtwebkit 静态编译 版本
2013年就编译好了,qtwebkit是最不好编译的了,尤其是静态编译,这儿分享给大家 估计总有人会用得到... 静态库下载地址:http://yunpan.cn/cyyNqrApbVDwq 提取码 ...
- vue时时监听input输入框中 输入内容 写法
Vue input 监听 使用 v-on:input="change" 实现即可 App.vue <template> <div> <md-field ...
- Django基于Pycharm开发之三[命名空间 与过滤器]
关于命名空间的问题,在project项目中,我们可以设置路由类似于: from django.conf.urls import url,includefrom django.contrib impor ...
- border,border-width不支持百分比
1.border-width不支持百分比 原因:不会因为设备大就按比例变大 同样的,outline,box-shadow,text-shadow也不支持百分比 也就是border不支持百分比 2.bo ...
- java基础_单例模式
java开发实战经典 --单例模式 从CSDN以及博客园的相关文章学习的,摘做笔记. “java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式 ...
- jmeter将上一个请求的结果作为下一个请求的参数——使用正则提取器
转自:http://www.cnblogs.com/0201zcr/p/5089620.html 在压力测试的时候,经常要将几个流程串联起来才能将程序测试通过.如:我现在用户首先要登录,获得我登录的凭 ...