Windows下为Python编译C扩展模块
工具:CodeBlocks 13.12
步骤
1 打开CodeBlocks新建工程:Shared library -- c -- sample [默认GUN GCC Complier就行]
右键sample目录,Build options添加以下三项内容:
Linker settings -- add -- C:\Python34\libs\python34.lib [库文件]
Search directories -- Linker -- C:\Python34\libs
Search directories -- Compiler -- C:\Python34\include ['Python.h'等头文件]
2 编辑main.c文件
#include <stdio.h>
#include <Python.h> int c_add(int x, int y) // 正常的C格式
{
return x+y;
} static PyObject *add(PyObject *self, PyObject *args) // 以下都是Python.h中的类型、方法
{
int a, b;
if(!PyArg_ParseTuple(args,"ii", &a, &b))
{
return NULL;
}
return (PyObject*)Py_BuildValue("i", c_add(a,b));
}
/*模块方法表*/
static PyMethodDef AddMethods[] = {
{"plus", add, METH_VARARGS, "add a and b"}, //add方法在模块中的名字
{ NULL, NULL, , NULL}
};
/*模块结构*/
static struct PyModuleDef addmodule = {
PyModuleDef_HEAD_INIT,
"sample", //模块名
"A add module", //文档字符串
-, //返回状态
AddMethods // 上面的方法表
}; PyMODINIT_FUNC PyInit_add(void) {
return PyModule_Create(&addmodule);
}
3 编译
在/bin/Debuge/目录下的libsample.dll就是我们所需要的文件,
重命名sample.pyd,放到import可以找到的地方,就可以在python中import sample了(一般放在C:\Python34\DLLs\中)

Windows下为Python编译C扩展模块的更多相关文章
- 【转】Windows下使用VS2008编译OpenCV 2.1 添加Intel TBB和Python支持
Windows下使用VS2008编译OpenCV2.1 添加Intel TBB和Python支持 步骤: 1.仔细阅读OpenCV官网上的InstallGuide:http://opencv.will ...
- 【转】linux和windows下安装python集成开发环境及其python包
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- linux和windows下安装python拓展包及requirement.txt安装类库
python拓展包安装 直接安装拓展包默认路径: Unix(Linux)默认路径:/usr/local/lib/pythonX.Y/site-packagesWindows默认路径:C:\Python ...
- Windows下从源代码编译Skia
在PPAPI里面画图,能够结合第三方的图形库.比方Cairo.Skia. Google Chrome.Chromium和Android都使用Skia作为画图引擎.我也来试试Skia,先过编译关. fo ...
- windows下安装python模块
如何在windows下安装python模块 1. 官网下载安装包,比如(pip : https://pypi.python.org/pypi/pip#downloads) pip-9.0.1.tar. ...
- windows下安装python和依赖包的利器——Anaconda
在windows下安装python和很多依赖包,安装起来略为痛苦,可以使用python的大整合包——Anaconda Anaconda下载地址: http://continuum.io/downloa ...
- 详细介绍windows下使用python pylot进行网站压力测试
windows下使用python进行网站压力测试,有两个必不可少的程序需要安装,一个是python,另一个是pylot.python是一个安装软件,用来运行python程序,而pylot则是pytho ...
- 手把手教你在Windows下使用MinGW编译libav(参考libx264的编入)
转自:http://www.th7.cn/Program/cp/201407/242762.shtml 手把手教你在Windows下使用MinGW编译libav libav是在Linux下使用纯c语言 ...
- windows下创建Python虚拟环境
windows下创建Python虚拟环境 说明 由于Python的版本众多,还有Python2和Python3的争论,因此有些软件包或第三方库就容易出现版本不兼容的问题. 通过 virtualenv ...
随机推荐
- struts2查询的数据的存放
当我们查询数据的时候,把它存放到一个位置.以供页面显示. 1:使用***Map取代内置对象存放 public String query(){ ActionContext.getContext().pu ...
- CSS3入门
CSS3 w3cschools css3 MDN英文 MDN中文 CSS3 is the latest evolution of the Cascading Style Sheets langua ...
- java.util.Timer类似于闹钟定时做任务
在web中实现任务计划,相当于实现闹钟的功能,要完成2个步骤: 1.定时器的设置: 2.对这个定时器的启动运行和停止进行实时监听 java.util.Timer定时器,实际上是个线程,定时调度所拥有的 ...
- supervisor笔记
supervisord 作为主进程,管理旗下的各个子进程,子进程会产生若干线程.当某个管理的服务异常奔溃之后,supervisor 会自动重启该服务.配合使用 superlance 插件以实现 Htt ...
- java变量初始化
java全局变量会自动初始化,但局部变量不会自动初始化.当我们新建一个对象的时候,java会申请一个区域存放类的数据,而成员变量就是类的数据,也是放在这个内存区域中,jvm申请内存时初始化.而方法中变 ...
- Apache环境服务器配置Let's Encrypt免费SSL证书及自动续期方法
如今越来越多的网站开始使用SSL证书,实现HTTPS网址形式,如果我们是英文网站更需要用到这样格式的HTTPS网址,因为根据谷歌搜索结果提示到如果用到SSL证书的在同等条件下排名结果是有靠前可能的.我 ...
- java复习-多线程
和线程之间的关系: 进程:进程是程序的一次动态执行过程,他经理了代码加载,执行到执行完毕的一个完整过程,这个过程也是进程本身从产生,发展到最终消亡的过程. 线程:线程是实现并发机制的一种有效手段,进程 ...
- Google Dremel 原理 - 如何能3秒分析1PB
简介 Dremel 是Google 的“交互式”数据分析系统.可以组建成规模上千的集群,处理PB级别的数据.MapReduce处理一个数据,需要分钟级的时间.作为MapReduce的发起人,Googl ...
- Shell错误[: missing `]'
shell 文件运行时出现错误: [: missing `]' 原因可能是 if [ ! -d $date] then mkdir ./$date fi 代码中的 ] 方括号内部必须要有个空格 ...
- Chapter 2 Open Book——23
Mike interrupted us then — he was planning an epic battle of the blizzard in the parking lot after s ...