0

我有一些用 C++0x 编写的代码,我想将它们作为扩展暴露给 Python 2.7。

由于它使用了几个 C++0x 特性,我不想用 C++03 重写它,所以我不得不使用 VC2010。然而,默认的 Python 2.7 安装是使用 VC2008 编译的。

我发现这篇文章解释了如何强制 distutils 使用 VC2010,但评论者指出这将导致 msvcr90.dll(由解释器链接)和 msvcr100.dll(由扩展名链接)之间的 DLL 冲突。

有没有办法在VC2010中编译扩展而无需重新编译Python?

(我最近才开始在 Windows 上编程,所以我对动态链接在那里的工作方式没有确切的了解)

4

1 回答 1

2

不,没有。

就像您已经知道的那样,当您使用 VS2010 工具集编译某些东西时,它会链接到msvcr100.dll. 由于 Python 与 链接msvcr90.dll,当您在同一个应用程序中混合使用时,您会得到不愉快的惊喜。

您现在最好的选择可能是停止使用任何 C++0x 功能并使用 VS2008 或 mingw 编译您的扩展。

如果这是您不打算分发的东西并且它只是为了玩耍,那么使用 VS2010 编译 Python 是唯一的选择。

于 2011-04-18T09:05:50.543 回答