Python的C扩展源码编译不太易

本文探讨了Windows平台下编译Python C扩展的困难,包括选择32位还是64位,面对Microsoft Visual C++ compiler、mingw/mingw-w64和Cygwin等编译工具的挑战,以及如何处理无法使用pip的情况。建议尽量使用包管理器或预编译的wheel包来避免源码编译。
摘要由CSDN通过智能技术生成

Python生态的优势之一轮子多,轮子分两类,一类是完全用Python本身写的,另一类是结合或者说使用了C/C++扩展的,由于Python的跨平台,前者安装无忧,后者如果能用到包管理自动搞定也无忧,但是如果没有包管理器,也找不到预编译好的版本,只有源码,那么就可能有点忧愁了,这种情况在Windows平台上比较常见,一些小众的包只有源码,没有预编译的程序。

忧愁一:32位还是64位

Python本身现在也有32位和64位之分,如果操作系统是32位,那就没问题了,因为Python肯定是32位,但如果操作系统是64位,那就要注意已有的Python是32位还是64位,32位的Python编译后的包自然是为32位使用,64位同理。

那么问题来了,构建的链接阶段引用的已有库也需要和编译的目标架构匹配,否则就可能出现Link错误。

_zbarlight.obj : error LNK2001: 无法解析的外部符号 zbar_image_set_data
_zbarlight.obj : error LNK2001: 无法解析的外部符号 zbar_image_destroy
_zbarlight.obj : error LNK2001: 无法解析的外部符号 zbar_symbol_get_data
_zbarlight.obj : error LNK2001: 无法解析的外部符号 zbar_image_create
_zbarlight.obj : error LNK2001: 无法解析的外部符号 zbar_image_scanner_set_config
_zbarlight.obj : error LNK2001: 无法解析的外部符号 zbar_image_scanner_create
_zbarlight.obj : 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值