我一直在编译 C 库,并链接 Python3 库文件以进行 Python 绑定。我一直使用 python39.lib 文件作为链接,但我想知道“版本化”数字(例如 python3x.lib)与非版本化数字(python3.lib)之间有什么区别。
在回答问题时,忘记提及这是使用 gcc 在 Windows 上编译的。
Thanks
python3.lib
仅包含 cpython 程序(或 Python 的 C 扩展)使用的关键库函数。python3x.lib
(例如python38.lib
, python39.lib
)包含完整的库函数。你应该链接到python3.lib
这样您的构建配置就不会受到次要 Python 版本升级(例如从 3.8 到 3.9)的影响。
链接非常依赖于平台和编译器。参见代码注释PC/pyconfig.h
(参见参考文献[3])。
附加信息
- PEP384 - 联动 https://www.python.org/dev/peps/pep-0384/#id22
- 关于 MSVC 链接器如何查找特定 Python 调试库的 Stackoverflow 问题 https://stackoverflow.com/questions/60522969/why-is-the-linker-looking-for-python36-d-lib-when-not-specified-anywhere
- PC/pyconfig.h https://github.com/python/cpython/blob/9cc9e277254023c0ca08e1a9e379fd89475ca9c2/PC/pyconfig.h#L270
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)