使用VC++2010扩展python
使用VC++2010扩展python
简介:这里介绍使用VC2010编译C语言编写的python扩展模块,hdlc模块。Hdlc是高级数据链路控制(High-LevelData Link Control或简称HDLC),用于无界流数据上确保用户数据包的完整性。该模块接口应该是用hdlc_pkt = hdlc.pack(buf)把无界流数据buf打包成一个hdlc数据包hdlc_pkt,使用pkt,passlen = hdlc.unpack(buf)把hdlc_pkt数据包还原为pkt数据包,passlen是在buf上读取过的数据长度。
VC新建项目,选用win32的win32项目,输入python的模块名hdlc(源码文件见文档附录)
确定后在选择里选择dll,空项目
复制c文件到项目目录下,然后在VC添加文件。
完成源码文件的添加
1. 配置属性》常规,把目标文件扩展名改为.pyd
2. 添加python头文件目录与库目录
在项目属性的VC++目录页面,添加python的库目录和头文件目录
3. 去除预编译,在c/c++的预编译头,不适用预编译头
4. 选择release版本,然后编译,生成-》生成hdlc
完成python的C语言扩展模块的编译。
使用扩展模块
把Projects\hdlc\Release\hdlc.pyd这个pyd文件复制到python安装目录的dlls目录下,即可在python中import使用。
测试脚本
附录
头文件hdlc.h
#compile so file for python CC = gccCFLAG = -Wall -o2INCLUDE = -I/usr/include/python2.6/ all: example.so %.o:%.c ${CC} ${CFLAG}${INCLUDE} -fpic -c $< -o $@ example_obj=example.o wrap.oexample.so: ${example_obj} ${CC}${CFLAG} -shared $^ -o $@ .PYONY: cleanclean: rm *.so *.o