栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用调试Python安装在Windows上构建Python-C-Extension

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用调试Python安装在Windows上构建Python-C-Extension

pythonXY.lib
在Windows上,针对的链接有点偷偷摸摸。当您查看用于链接的命令行时,您会看到没有python库传递给链接器,即’link.exe’。注意:对于Linux也是如此,但是在Linux上则不必这样做,因为所需的符号将由python-
executable提供。

但是,很容易通过来检查是否

dumpbin/dependents resulting.pyd
存在依赖关系
pythonXY.dll
,并且还
extra_link_args =["/VERBOSE:LIB"]
对扩展定义进行了添加,并且触发链接器的详细模式将显示该链接器使用
pythonXY.lib

偷偷摸摸的部分:Microsoft Compler具有便利的编译指示,

#pragma comment(lib,...)
可以自动触发库的链接,该链接也用在Python标头中:

#    if defined(_MSC_VER)  # if defined(_DEBUG)#         pragma comment(lib,"python39_d.lib")# elif defined(Py_LIMITED_API)#         pragma comment(lib,"python3.lib")# else#         pragma comment(lib,"python39.lib")# endif #    endif 

如您所见,要链接到调试版本,需要定义

_DEBUG

_DEBUG
distutils
Windows自动定义,如果
build_ext
通过options调用
--debug
,例如

python setup.py build_ext -i --debug

可以翻译

pip

pip install --global-option build --global-option --debug XXXXX

它可以大致解释为:触发

build
命令(还包括
build_ext
-command),
--debug
在安装前带有选项。


构建调试C扩展时的另一种功能,在Windows上还有更多功能:

#ifdef _DEBUG#       define Py_DEBUG#endif

在Python3.8之前定义

Py_DEBUG
宏意味着无与伦比的ABI
,因为它还假设这会导致发布模式的不同内存布局以及某些其他功能缺失。
Py_TRACE_REFS
PyObject

但是,从Python3.8开始,通过提供缺少的

pythonXY_d.lib
/
pythonYX.lib
作为链接到另一个版本的符号链接,可能可以摆脱它。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/626591.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号