我有一些用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上编程,所以我对动态链接的工作方式没有准确的了解)
答案 0 :(得分:2)
不,没有。
就像您已经想到的那样,当您使用VS2010工具集编译某些内容时,它会与msvcr100.dll
链接。由于Python与msvcr90.dll
链接,因此在同一应用程序中混合使用时会出现令人不快的意外。
现在最好的选择是停止使用任何C ++ 0x功能并使用VS2008或mingw编译扩展。
如果这是你不想分发的东西而且只是为了玩游戏,那么使用VS2010编译Python是唯一的选择。