【发布时间】:2017-04-27 12:57:49
【问题描述】:
根据这里关于堆栈溢出的建议,我安装了 mingw32 pthread 包:
但我仍然无法使用 C++11 多线程编译代码:
error: 'mutex' in namespace 'std' does not name a type
我使用我使用 mingw32-make 执行的 makefile,它使用位于 C:\MinGW\bin\g++.exe 的 g++。
G++ 版本:g++.exe (GCC) 5.3.0
Mingw32 制作版本:GNU Make 3.82.90,Built for i686-pc-mingw32
我使用-M 选项来生成已使用的标头列表,这就是我所拥有的:
c:\mingw\lib\gcc\mingw32\5.3.0\include\c++\thread \
c:\mingw\lib\gcc\mingw32\5.3.0\include\c++\mutex \
我什至不确定这些标题是否正确。
可能出了什么问题?我该如何解决这个问题?
【问题讨论】:
-
显示您使用的代码,以便我们知道您没有忘记
#include <mutex>。同时发布g++ --version的结果可能会有用。以及如何调用编译器。 -
不,我没有忘记包含互斥锁,代码编译得很好并且可以在 linux 上运行。当我使用带有它自己的 MinGW 版本的 Qt Creator 编译时,它也会在 Windows 上编译。
-
我建议你获取 MinGW64: sourceforge.net/projects/mingw-w64 。原来的 MinGW 很久没有维护了。 Qt creator 带有 MinGW64(它不是他们自己的版本)。你可以从那里使用mingw(Qt)或下载我给你的。要使 std 线程正常工作,您需要 posix 线程。