--编辑 如果您想使用MinGW GCC 8.4.1和线程/互斥锁/期货/原子,请不要下载Win32 threader版本,而是下载Posix版本。 --编辑
我的MinGW安装如下: x32-4.8.1-release-win32(作为线程器)-sjlj rev 5
我已经解压并正确确认MinGW GCC 4.8.1(修订版5)已安装在C:\ MinGW \ mingw32中。 我已经设置Code Blocks以查找正确路径中的最新编译器(我确定这一点)。 我可以使用#include iostream编译正常程序。 现在,当我尝试运行使用#include thread的程序时,它会给出“错误:'thread'不是'std'的成员”。
现在这是我做过和尝试过的:
我正在cplusplus.com上按照模板或教程进行编程。我已经将代码完全按照网页上的呈现方式(朝向底部)编写好了。
在Code Blocks中,我尝试使用编译器标志"Have g++ follow the C++11 ISO language standard -std=c++11"。
我还尝试了标志"Have g++ follow the coming C++0x ISO language standard -std=c++0x"。
我尝试过同时使用和单独使用这两个标志,但都不行。
我也手动尝试了这些命令。
另一个我手动尝试的命令是-std=gnu++11,这是线程头部推荐的。
--编辑 看起来__cplusplus小于201103L,这在线程头中已经说明(或者更确切地说被定义)。只有当我手动使用-std=c++11时才会出现这种情况,由于某种原因C::B会在手动声明后删除它,所以我必须使用复选框来使用此标志... --编辑
我的编译器设置如下:
工具链可执行文件选项卡:
C编译器:i686-w64-mingw32-gcc-4.8.1.exe
C++编译器:i686-w64-mingw32-c++.exe
动态链接器:i686-w64-mingw32-c++.exe
静态链接器:ar.exe
调试器:GDB/CDB debugger: default
资源编译器:windres.exe
制作程序:mingw32-make.exe
我尝试使用bin文件夹中的其他可执行文件,但仍然没有运气...我开始怀疑GCC是否支持C++11或线程!?
有人能够在MinGW GCC、Code Blocks或一般情况下使用线程吗?如果可以,你是如何做到的?有哪些链接可以帮助?有什么建议吗?P.S. 我知道还有其他方式来进行线程处理,例如posix或其他SDK(我已经成功尝试过SFML的线程处理)。但我想使用GCC线程处理,并且我很困惑为什么这么难做,因为所有必要的文件都在那里...
--编辑 我发现当我在Code Blocks之外手动编译程序时,我仍然会得到相同的错误,无论我使用g++ c++还是i686-w64-mingw32-g++/c++。
这是我用来构建文件的命令:
C:\MinGW\mingw32\bin>g++.exe -D__GXX_EXPERIMENTAL_CXX0X__ -o0 -g3 -Wall -c -fmessage-length=0 -std=c++11 -Wc++11-compat -o obj\Debug\main.o "F:\C Projects\Code Blocks\thread\main.cpp"
仍然返回错误:'thread'不是'std'的成员。
这可能是一个糟糕的构建吗?我将尝试其他版本... --编辑