【发布时间】:2011-01-07 10:20:42
【问题描述】:
我问这个问题是因为我需要构建一个特定的模块(aspell_python,http://wm.ite.pl/proj/aspell-python/)来使用在 Windows 7(当然是 64 位)机器上运行的 64 位 Python 2.6。我也一直想知道如何使用 C 代码加速某些功能,所以我想在未来为 Python 制作自己的外部 C 模块。
谁能告诉我在 C 中成功构建 64 位 Python 扩展所需的步骤?我知道 Python,我知道 C,但我不了解 Visual Studio 或 Windows 特定的开发人员问题。我尝试使用 Visual Studio 2008(这是此处唯一可用的商业产品)遵循 Python 网站 (http://docs.python.org/extending/windows.html#building-on-windows) 上的官方指南,但是即使是最基本的示例也无法构建。
【问题讨论】:
-
添加如何即使是最基本的例子也失败了。
-
例如:遵循每个方向后,当我尝试构建 example_nt 时,我收到链接器错误,它找不到 python26.lib。然后我尝试使用与我的python版本一起分发的python26.lib,但这只导致两个链接器错误:1>example.obj:错误LNK2019:未解析的外部符号__imp___Py_NoneStruct在函数_ex_foo中引用 1>example.obj:错误LNK2019 : 函数 _initexample 中引用的未解析的外部符号 __imp__Py_InitModule4
-
之后,我尝试自己构建python26.lib,方法是使用VS2008从源代码构建整个python 2.6项目,这当然会导致许多错误。然而,它产生了一个 python26_d.lib,当与 example_nt 一起编译时仍然给出链接器错误
-
如果您安装了带有 64 位编译器的 Visual Studio 2008 Professional,则使用“python setup.py build”构建 example_nt 应该可以在 Python 2.6.6 AMD64 上开箱即用。
-
很可能您没有正确安装 Visual Studio 2008 Professional。 64 位编译器是一个需要在安装时启用的选项。如果您使用的是 Visual Studio 2008 Express,则它不附带 64 位编译器。