Python中调用C++函数
来源:互联网 发布:linux开机启动zookeep 编辑:程序博客网 时间:2024/05/21 11:07
Python开发效率高,运行效率低。而c/c++恰恰相反。因此在python脚本中调用c/c++的库,对python进行扩展,是很有必要的。使用python api,http://www.python.org/doc/ ,需要安装python-dev。
test.cpp文件如下
#include <python2.7/Python.h> //包含python的头文件 #include <string>#include <iostream>using namespace std;// 1 c/cpp中的函数 int my_c_function(const char* cmd,const char* opt) { string arg = string(cmd) + string(opt); cout << "arg:"<<arg<<endl; int n = system(arg.c_str()); return n; } // 2 python 包装 static PyObject * wrap_my_c_fun(PyObject *self, PyObject *args) { const char *cmd,*opt; int n; if (!PyArg_ParseTuple(args, "ss", &cmd,&opt))//这句是把python的变量args转换成c的变量command d return NULL; n = my_c_function(cmd,opt);//调用c的函数 return Py_BuildValue("i", n);//把c的返回值n转换成python的对象 } // 3 方法列表 static PyMethodDef MyCppMethods[] = { //MyCppFun1是python中注册的函数名,wrap_my_c_fun是函数指针 { "MyCppFun1", wrap_my_c_fun, METH_VARARGS, "Execute a shell command." }, { NULL, NULL, 0, NULL } }; // 4 模块初始化方法 PyMODINIT_FUNC initMyCppModule(void) { //初始模块,把MyCppMethods初始到MyCppModule中 PyObject *m = Py_InitModule("MyCppModule", MyCppMethods); if (m == NULL) return; }
make:
g++ -shared -fpic test.cpp -o MyCppModule.so
test.py文件如下
import MyCppModuler = MyCppModule.MyCppFun1("ls ","-l")print r
http://blog.csdn.net/marising/article/details/2845339
http://www.th7.cn/Program/Python/2011-07-07/29384.shtml
- python调用c中函数
- Python 调用 C函数
- python 调用 c 函数
- python中调用函数
- C中调用PYTHON
- c中调用python
- Python调用c/c++函数
- Python调用C语言函数
- Python调用C语言函数
- Python调用C语言函数
- Python调用C语言函数
- Python调用C/C++函数
- C调用Python的函数
- Python调用C语言函数
- 001.python调用C函数
- Python调用 c 的函数
- C语言调用Python函数
- C调用Python的函数
- 安装Fedora 15后需做的25件事情
- just a test
- web.xml
- [转] 心态是最大的本钱;人无完人,重要的是怎么做人
- Ant打可执行jar包指南
- Python中调用C++函数
- 使用stringstream时需要注意的一点
- 使用NDK移植/编译开源库(2)zlib的编译
- winform中坐标系转换的问题,获取某点在屏幕中的绝对位置等
- 国外知名网站Stackoverflow 历时两年评选出11本对程序员最有影响力的书籍
- Win7的评分工具WinSAT
- spring-ibatis-Struts-Hibernate 架构图
- 关于C++里面折叠代码的两招
- C语言的发展史