使用VC2010编译Python扩展

时间:2011-01-13 11:14:24

标签: c visual-c++ msvcrt python-module

我有一些用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 个答案:

答案 0 :(得分:2)

不,没有。

就像您已经想到的那样,当您使用VS2010工具集编译某些内容时,它会与msvcr100.dll链接。由于Python与msvcr90.dll链接,因此在同一应用程序中混合使用时会出现令人不快的意外。

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

如果这是你不想分发的东西而且只是为了玩游戏,那么使用VS2010编译Python是唯一的选择。