代码之家  ›  专栏  ›  技术社区  ›  Mikhail_Sam

python的C++编译器支持C++11(MinGW和MSVC)(还有cl.exe致命错误)

  •  2
  • Mikhail_Sam  · 技术社区  · 8 年前

    我正在尝试从安装python包 setup.py . 实际上,这个: https://github.com/facebookresearch/fastText 我使用python 3.6(anaconda,内置于Visual Studio 2017中)

    我拥有Visual Studio 2017并安装了MinGW:

    C:\MinGW\bin>gcc --version
    gcc (MinGW.org GCC-6.3.0-1) 6.3.0
    

    然后我使用:

    python setup.py install
    

    并获取下一条错误消息:

    错误:“thread”不是“std”的成员

    我发现这意味着我需要使用C++11特性。好啊但是怎么做呢? 我试图更改文件 distutils.cfg 在my python目录中使用下一个编译器:

    mingw32
    msvc
    

    但对于 msvc 获取另一个错误:

    错误C2039:“to\u string”:不是“std”的成员


    我找到了一些信息 -std=c++11 使用一些c++11功能,但是 我不知道在哪里以及如何使用它!安装后是否需要在python shell中编写它?或在distutils中。cfg? 我尝试了这两种方法,得到了:

    错误:无法识别选项-s--->对于python

    错误:不知道如何使用在“nt”平台上编译C/C++代码 “msvc-std=c++11”编译器--->对于distutils。cfg公司

    1 回复  |  直到 7 年前
        1
  •  3
  •   Mikhail_Sam    7 年前

    很久以后,我找到了一个解决办法。 问题是我没有正确安装MSVC,并且(重要的)没有将其添加到路径变量中。 所以正确的排序:

    1. 使用Visual Studio安装程序安装下一个工具(您可以在此处获得免费版本: microsoft_official ):
      • MSBuild
      • 基本组件Visual Studio C++
      • VC++2017版本15.9 v14.16最新v141工具
      • 用于CMake的Visual C++instruments
      • C++/CLI支持
      • 适用于Windows 10的SDK(10.0.17134.0)
      • 用于CMake和Linux的Visual C++instruments
      • 用于VC++2017的工具箱v14.13和14.11 15.4/15.6 这里有点困难:有时包的名称会随着Visual Studio安装程序的版本而变化,而我有非英语版本,所以我手动翻译了它们的名称。也许你不需要全部,但这套适合我。
    2. 现在您有了MSVC编译器,我们需要告诉python使用它:在Windows中将cl.exe路径添加到路径变量中(通常位于此处): C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin

    这解决了大量python软件包在使用Windows时遇到的问题。但您需要为此安装大型应用程序(几个GB)。