Python调用C程序
2015-11-10 20:31
666 查看
Python调用C程序
介绍两种方法,一种是在C文件中加上python.h头文件,较复杂,另一种是使用python中的ctypes包,较简单。1. 在C文件中加上python.h头文件
c文件中写法要求较复杂wrapper.c:
#include <Python/Python.h> int fact(int n) { if (n <= 1) return 1; else return n * fact(n - 1); } PyObject* wrap_fact(PyObject* self, PyObject* args) { int n, result; if (! PyArg_ParseTuple(args, "i:fact", &n)) return NULL; result = fact(n); return Py_BuildValue("i", result); } static PyMethodDef exampleMethods[] = { {"fact", wrap_fact, METH_VARARGS, "Caculate N!"}, {NULL, NULL} }; ' void initexample() { PyObject* m; m = Py_InitModule("example", exampleMethods); }
从终端进入
.c文件所在文件夹
输入
gcc -shared -o example.so wrapper.c -framework Python
python程序中调用实例
import example
print example.fact(5)
2. 调用ctypes库
c文件不需要特殊格式algo.c:
#include<stdio.h> int sum(int a, int b) { return a+b; } int multiply(int a,int b) { return a*b; }
从终端进入
.c文件所在文件夹
输入
gcc -shared -o algo.so algo.c -framework Python
python程序中调用实例
Main.py
import ctypes so=ctypes.CDLL("./algo.so") print so.sum(3,5) print so.multiply(3,5)
*注:本例在OSX上运行有效
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 如何写好 C main 函数
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例