python - 构建使用 C++11 功能的 Python 扩展时出现问题

标签 python windows visual-studio-2010 c++11

我正在尝试在 Windows 8.1 上构建一个使用 C++11 功能的 Python3.42 64 位扩展模块。该模块可以使用 gcc 或 clang 在 Linux 和 MacO 中正确构建。

在 Windows 上,我安装了 Visual Studio 2010 Express 和 Windows sdk 7.1(以安装 x64 编译器,而 VS2010 Express 中显然缺少该编译器)。我已经能够构建部分扩展,但某些 C++11 功能存在错误,而这些功能在 VS2010 中不可用。我可以修改扩展代码以避免使用这些 C++11 功能,但我们有更多带有 C++11 功能的扩展,而且我是团队中唯一使用 Windows 的人......所以这不是一个可行的选择。我更愿意按原样构建它。

所以问题是。如何使用具有更完整的 C++11 实现的 VS 编译器版本(例如 VS2012 或最好是 VS2013)在 Windows 上构建 python 3 扩展?

最佳答案

好吧,我会回答自己这个问题。

我猜解决方案是使用 vs2012 或 vs2013 来构建扩展。在这种情况下,我需要使用 vs2012 或 vs2013 重建 python 解释器。我找到了这个页面,其中解释了如何操作:http://p-nand-q.com/python/building-python-33-with-vs2013.html很高兴您可以从此页面下载 vs2013 构建的 python 二进制文件。然而,遵循这条路线意味着我必须使用 vs2013 构建我可能需要的每个非纯 python 扩展,这可能是一些,因为我主要是在做研究而不是生产,而且我不知道我可能需要什么扩展。构建 numpy 和 scipy 并不简单,它们似乎需要 fortran 编译器来构建它们。我想这是我想避免得出的结论,我希望有一些技巧来避免它。

最后我选择修改代码的 C++11 部分,以便它可以使用 vs2010 构建,这不太好,但我认为我会避免 future 构建我可能需要的每个扩展时出现的很多问题。我可以从这里下载 Windows 二进制文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/

我猜另一个解决方案是在 Linux 或 MacO 中开发。

关于python - 构建使用 C++11 功能的 Python 扩展时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28635434/

相关文章:

python - PyMC 多元线性回归

python - 如何创建交集函数?

C++ ShellExecuteEx 不会通过不从该 exe 生成输出来执行带参数的 exe

c++ - Visual Studio (C++) - 关于目录配置的最佳实践是什么?

c++ - malloc() 返回我无法访问的地址

c++ - 如何将作品链接到您的 Visual Studio 项目?

python - 将函数应用于 3d numpy 数组切片的最佳方法

python - 如何在后台没有控制台的情况下启动这个 python GUI 应用程序?

python - Windows 中的 Pygame : ImportError: DLL load failed

c++ - Windows 7 异常代码 : 0xc0000409