将MinGW与Visual Studio 2010集成(Makefile项目)

Con*_*tin 4 c++ mingw visual-studio-2010 makefile-project c++11

我正在尝试使用Visual Studio 2010的MinGW(版本4.7.2)来使用一些新的C++ 11功能(遗憾的是我仍然使用WindowsXP并且不能使用Visual Studio 2012).首先,我创建了一个项目:File - > New Project - > Visual C++ - > General - > Makefile-Project

General:
Build Command Line: mingw32-make.exe
Rebuild All Command Line: mingw32-make.exe rebuild all
Clean Command Line: mingw32-make.exe clean all

IntelliSense:
Include Search Path: C:\MinGW\lib\gcc\mingw32\4.7.2\include\c++;C:\MinGW\include;
Assembly Search Path: C:\MinGW\lib\gcc\mingw32\4.7.2;C:\MinGW\lib;
Additional Arguments: -std=c++11
Run Code Online (Sandbox Code Playgroud)

我创建了一个包含内容的makefile:

all:
    g++ -std=c++11 -pthread -o Makefile_Test.exe main.cpp
Run Code Online (Sandbox Code Playgroud)

它编译得很好,但在Visual Studios编辑器中几乎所有东西都是波浪形的红色.即

std::vector<std::thread> threads;
Run Code Online (Sandbox Code Playgroud)

std::vector - >'错误:命名空间std没有成员向量'

std::thread - >'错误:命名空间std没有成员线程'

甚至 std::cout << "";

std::cout - >'错误:命名空间std没有成员cout'

但是我当然包括了相应的标题:Visual Studio甚至可以找到它们(将光标放在#include - > Ctrl + Shift + G打开标题).我的MinGw文件夹如下所示:

+ MinGW
|- bin
|- doc
|- include
|+ lib
 |- gettext
 |+ gcc
  |+ mingw32
   |+ 4.7.2
    |- debug
    |+ include
     |- c++
     |...
    |- include-fixed
    |- install-tools
|- libexec
|- mingw32
|- msys
|- share
|- var
Run Code Online (Sandbox Code Playgroud)

我还尝试删除sdf文件几次,让Visual Studio从头开始重建 - 但所有这些错误再次出现.

我在这里做错了什么想法?

And*_*owl 9

我担心你将不得不放弃尝试使这些红色曲线消失,除非你完全禁用它们(例如,甚至不会标记对不存在的函数的调用).

原因是Visual Studio的Intellisense使用单独的前端到EDG的C++编译器来解析您的程序,并可能在无效的语句或表达式下放置红色波形,并且VS2010中的Intellisense使用的版本(显然)不完全符合C++ 11.

因此,切换到GCC 4.7.2作为编译器将有助于构建您的C++ 11程序,但不会影响Intellisense的行为.

如果要完全禁用红色波形,可以选择工具 - >选项 - >文本编辑器 - > C/C++ - >高级,然后将"禁用斜角"设置为"真".