Я пытаюсь кросс-компиляции для Windows, простое приложение:MinGW ошибка: «нить» не является членом «Std»
#include <thread>
void Func(){
return;
}
int main(){
std::thread thr1(Func);
thr1.detach();
return 0;
}
И вот что я получаю:
$ i686-w64-mingw32-g++ -static-libstdc++ -static-libgcc -pipe -g -std=c++0x ./threadstutor.cpp
./threadstutor.cpp: In function ‘int main()’:
./threadstutor.cpp:8:3: error: ‘thread’ is not a member of ‘std’
./threadstutor.cpp:8:15: error: expected ‘;’ before ‘thr1’
./threadstutor.cpp:9:3: error: ‘thr1’ was not declared in this scope
На самом деле, этот код не имеет такой проблемы, если компилировать с g ++ для Ubuntu; но мне нужно перекрестно скомпилировать для Windows, и здесь я застрял.
Если вы скомпилируете это на окнах, вам понадобятся Mingw-Builds v4.8.1 с posix-threads: http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.8.1/64 -bit/threads-posix/sjlj/Вы можете выбирать между sjlj и seh. Seh - только x64, а sjlj - как x32, так и x64. – Brandon
@CantChooseUsernames Я компилирую его на Ubuntu. У меня есть последний mingw из репозитория; _ "i686-w64-mingw32-g ++ --version" _ говорит _ "i686-w64-mingw32-g ++ (GCC) 4.6.3" _ –
@CantChooseUsernames, хотя, если я не нашел решение, я мог бы использовать его как какой-то обходной путь: запустите MinGW через вино, чтобы скомпилировать источник. Хотя это странно: D Кстати, моя версия компилятора не поддерживает _std :: thread_? –