windows下swig 写python扩展的麻烦事
来源:互联网 发布:新手windows建站 编辑:程序博客网 时间:2024/05/16 08:31
参照swig官方文档,用c写python 扩展的例子程序,没想到一波三折,碰到很多问题,反复baidu,google终于搞定,记录下来,也给像我这样初次接触swig的人提个醒.
我的环境:ActivePython 2.6.3.7 mingw
步骤如下:
1.安装swig,mingw,略,请参照官方文档,注意设置好环境变量
2.由于在编译时使用MinGW,因此需要一个类似UNIX的.a文件来作为运行库,而在Windows下,我们只能提供DLL,因此就需要有一个工具把DLL翻译到A文件,第一步,我们要导出DLL文件的定义,这里我们使用pexports,下载后解压,将bin目录下pexports.exe拷贝到Python的安装目录,在命令行下到达此目录,输入:
pexports python26.dll > python26.def
3.使用dlltools将def和dll文件转为a文件,dlltools在安装mingGW时就应该自动安装了,命令行下输入
dlltool --dllname python26.dll --def python26.def --output-lib libpython26.a
4.libpython26.a放到python安装目录libs/下,和 python26.lib同一个目录下,不然编译时会有"undefined reference to xxx"的错误
5.修改Python26/Lib/distutils/command/build_ext.py 文件把
self.compiler = new_compiler(None, 改为
self.compiler = new_compiler(self.compiler,
不然编译时会出现Unable to find vcvarsall.bat 错误 (这个是我google国外的帖子,某人提出的方法,不知道有其他的解决办法没)
6. 修改或创建/Python26/Lib/distutils/distutils.cfg 加入
[build]
compiler = mingw32
上面只列出需要注意的地方,其他的请参考官方文档.
参考url:
http://simonami.blogbus.com/logs/38061536.html
http://www.mingw.org/wiki/FAQ
http://boodebr.org/main/python/build-windows-extensions
http://docs.python.org/install/index.html#tweak-flags
- windows下swig 写python扩展的麻烦事
- Windows下写用于python的C扩展模块
- 用 SWIG 生成 TidyLib 的 Python 扩展
- windows下的Python扩展
- 多线程环境下用swig做python扩展库时的问题:如何做阻塞函数的扩展?
- 多线程环境下用swig做python扩展库时的问题:如何做阻塞函数的扩展?
- Windows下写PHP的C扩展
- windows下使用swig
- 使用SWIG来扩展Python
- windows下用swig实现python调用C\C++的方法
- 使用swig实现C++的python扩展功能
- 使用swig进行C/C++对Python的扩展
- 使用swig实现C++的python扩展功能
- Windows下python使用SWIG调用C++ dll
- 使用SWIG写Python插件
- windows下的python扩展包
- Windows 下的Python扩展库
- swig+python的用法
- 用函数判断系统是Big Endian还是Little Endian
- SQL2005中row_number()等函数的用法
- The Snowball Part-I
- UTF-8、UTF-16、UTF-32及java中的unicode
- 利用四通道单刀单掷开关ADG1611和仪表放大器AD620构建低成本可编程增益仪表放大器电路
- windows下swig 写python扩展的麻烦事
- 又要考试了,不要去拜什么神了,来拜拜此贴,稳过!!!
- poj3094
- linux|chmod,chown,chgrp文件安全与权限
- 编写、发布、配置一个ASP.NET 网站的过程(VS2008+Win7+IIS7)
- 脉冲成形滤波器设计
- 傅立叶变换与傅立叶反变换的C语言实现
- 使用宏模拟htonl、ntohl、htons、ntohs的实现
- 巧用Junit 静态变量