讲述C++中调用Python脚本
来源:互联网 发布:怎么预测时间序列数据 编辑:程序博客网 时间:2024/05/22 15:07
讲述C++中调用Python脚本
2010-02-01 13:25 佚名 清华大学出版社 我要评论(0) 字号:T |T
C++中调用Python脚本的意义就不讲了,至少你可以把它当成文本形式的动态链接库,为此我也苦恼很久,后来终于让我找到了解决办法。
AD: 51CTO云计算架构师峰会 抢票进行中!
也许大家对与Python脚本还不是很了解,看完本文后对您一定会大有帮助,下文除了学习Python脚本的基本性质外还对调用Python脚本时出现的问题进行全面研究。
需要的时候还可以改一改,只要不改变接口, C++的程序一旦编译好了,再改就没那么方便了 先看Python脚本代码!
- #test function
- def add(a,b):
- print "in python function add"
- print "a = " + str(a)
- print "b = " + str(b)
- print "ret = " + str(a+b)
- return
- def foo(a):
- print "in python function foo"
- print "a = " + str(a)
- print "ret = " + str(a * a)
- return
把上面的PPython脚本代码存为pytest.py接下来是c++ 的代码:
- #include "Python.h"
- int main(int argc, char** argv)
- {
- // 初始化Python
- //在使用Python系统前,必须使用Py_Initialize对其
- //进行初始化。它会载入Python的内建模块并添加系统路
- //径到模块搜索路径中。这个函数没有返回值,检查系统
- //是否初始化成功需要使用Py_IsInitialized。
- Py_Initialize();
- // 检查初始化是否成功
- if ( !Py_IsInitialized() )
- {
- return -1;
- }
- // 添加当前路径
- //把输入的字符串作为Python代码直接运行,返回0
- //表示成功,-1表示有错。大多时候错误都是因为字符串
- //中有语法错误。
- PyRun_SimpleString("import sys");
- PyRun_SimpleString("sys.path.append('./')");
- PyObject *pName,*pModule,*pDict,*pFunc,*pArgs;
- // 载入名为pytest的脚本
- pName = PyString_FromString("pytest");
- pModule = PyImport_Import(pName);
- if ( !pModule )
- {
- printf("can't find pytest.py");
- getchar();
- return -1;
- }
- pDict = PyModule_GetDict(pModule);
- if ( !pDict )
- {
- return -1;
- }
- // 找出函数名为add的函数
- pFunc = PyDict_GetItemString(pDict, "add");
- if ( !pFunc || !PyCallable_Check(pFunc) )
- {
- printf("can't find function [add]");
- getchar();
- return -1;
- }
编译选项, 需要手动指定Python脚本的include 路径, 和链接接路径。
- 讲述C++中调用Python脚本
- 讲述C++中调用Python脚本
- C,C++代码中调用python脚本
- 【编程语言】C中调用Python脚本
- C,C++代码中调用python脚本
- C/C++中调用执行python脚本文件
- C调用Python脚本代码
- c/c++ 调用python 脚本
- C语言调用PYTHON脚本
- C++中调用Python脚本
- C++中调用Python脚本
- C++中调用Python脚本
- C++中调用Python脚本(
- shell中调用python脚本
- C中调用shell 脚本
- C中调用PYTHON
- c中调用python
- 在python中调用另一个python脚本
- 我的C++之旅开启了
- 空类的大小(sizeof), placement new 操作符
- 专家调查显示:液晶电视坏眼超等离子电视
- 我的第一次
- Fedora5下构造内核树 .
- 讲述C++中调用Python脚本
- BASH命令和SHELL脚本总结(5)赋值篇
- Unicode UTF-8 Ansi 互转及MultiByteToWideChar和WideCharToMultiByte用法等编码相关
- 液晶DID、等离子显示器、DLP背投技术对比
- Velocity 模板引擎在复杂邮件业务中的简单举例
- 前端优化
- [C#]GDI+在鼠标移动(MouseMove)时画平滑曲线
- BASH命令和SHELL脚本总结(6)括号篇
- iOS应用程序状态切换相关