minGW (с g ++ 4.7.1) не компилирует простой код C ++ 11 (под WinVista)

Я сделал свою домашнюю работу и искал ответ здесь и в сети. Простой код ниже не компилируется:

#include <thread>
#include <iostream>

void hello()
{
std::cout << "Hello from thread " << std::endl;
}

int main()
{
std::thread t1(hello);
t1.join();
return 0;
}

Это очень простой код, но я получаю следующие ошибки:

Thread_Cpp11_002.cpp: In function 'int main()'
Thread_Cpp11_002.cpp:14:5: error: 'thread' is not a member of 'std'
Thread_Cpp11_002.cpp:14:17: error: expected ';' before 't1'
Thread_Cpp11_002.cpp:15:5: error: 't1' was not declared in this scope

И я перепробовал много вещей, ни одна из которых не сработала:

  1. декларирование t1 с помощью thread вместо std::thread
  2. Компиляция с g ++ 4.8.0
  3. Используя следующие флаги, индивидуально и вместе: -pthread, -std=gnu++11, -std=c++0x, -std=c++11...

Поэтому я думаю, что этот вопрос стоит опубликовать здесь.

Эти компиляции были сделаны через командную строку. После того, как он заработает, я попытаюсь использовать Code :: Blocks 12.11, который отлично работал на C ++ 98.

Помните, я использую Windows Vista.

2

Решение

Это хорошо известная проблема с некоторыми сборками MinGW (просто найдите mingw thread в вашем любимый двигатель). Если вам нужна поддержка потоков, вы должны использовать другую библиотеку (например, boost или native Windows API) или другую сборку.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]