用VC2010编译Python扩展
Posted
技术标签:
【中文标题】用VC2010编译Python扩展【英文标题】:Compiling Python extensions with VC2010 【发布时间】:2011-06-08 10:36:59 【问题描述】:我有一些用 C++0x 编写的代码,我想将它们作为扩展暴露给 Python 2.7。
由于它使用了几个 C++0x 特性,我不想在 C++03 中重写它,所以我不得不使用 VC2010。但是默认的 Python 2.7 安装是用 VC2008 编译的。
我发现this post 解释了如何强制 distutils 使用 VC2010,但评论者指出这将导致 msvcr90.dll(由解释器链接)和 msvcr100.dll(由扩展名链接)之间的 DLL 冲突)。
有没有办法在VC2010中编译扩展而无需重新编译Python?
(我最近才开始在 Windows 上编程,所以我对动态链接在那里的工作原理没有确切的了解)
【问题讨论】:
【参考方案1】:不,没有。
就像您已经知道的那样,当您使用 VS2010 工具集编译某些东西时,它会链接到 msvcr100.dll
。由于 Python 与 msvcr90.dll
链接,因此在同一个应用程序中混合它们时,您会得到令人不快的惊喜。
你现在最好的选择可能是停止使用任何 C++0x 功能并使用 VS2008 或 mingw 编译你的扩展。
如果这是你不打算分发的东西并且它只是为了玩,使用 VS2010 编译 Python 是唯一的选择。
【讨论】:
以上是关于用VC2010编译Python扩展的主要内容,如果未能解决你的问题,请参考以下文章