24


问候,

我最近搬出我的 unix 避难所来测试一个所谓的跨平台网络库,结果发现 mingw 不喜欢吃 c++11 的东西。

我认为我缺少所需的标头,因为 Win7 不包含 c++11 支持。

它用 VS2012 编译得很好,
但 g++ 拒绝。

error: 'thread' in namespace 'std' does not name a type
error: 'mutex' in namespace 'std' does not name a type

问题是:

如何在不使用 VS2012 安装提供的情况下获取 c++11 头文件/库的副本,即 <thread>。

PS #1 我尝试了 mingw-get update 但它仍然找不到 <thread>
PS #2 我也在使用 -std=c++11


真诚的,
克里斯。

4

3 回答 3

16

这些 MinGW-w64 构建支持 C++11 线程、原子操作等。

  1. MinGW-builds 现在集成到 MinGW-w64 项目中
  2. MinGW-builds (项目很旧,不会更新,见上点)
  3. MinGW-w64 rubenvb 64 位32 位构建

请注意,MinGW-w64 不仅支持 64 位,而且确实支持它,这与旧的 MinGW(.org) 不同,后者缺少很多新的 Vista+ API,当然还有 64 位支持。

于 2013-07-09T23:51:21.860 回答
6

也看这里: https ://github.com/meganz/mingw-std-threads 这是 std::thread 和其他的更轻量级的本地实现,不使用 pthreads 的 win32 端口。

于 2014-12-11T11:17:00.060 回答
0
  1. 转到: https ://sourceforge.net/projects/mingw-w64/files/?source=navbar 。

  2. 查找并下载。

MinGW-W64 GCC-8.1.0:

x86_64-posix-seh

  1. 解压缩并移至 MinGW 文件夹。

    如果您使用 g++ 进行编译:

  2. 为新的 g++ bin 路径创建 bash 别名('/mingw/x86_64-8.1.0-release-posix-seh-rt_v6-rev0/mingw64/bin/g++')

  3. 使用新的 g++ bin 编译。

    如果您使用的是 Cmake:

  4. 创建 CmakeLists.txt 并添加: set(CMAKE_CXX_COMPILER /mingw/x86_64-8.1.0-release-posix-seh-rt_v6-rev0/mingw64/bin/g++)

  5. 使用 Cmake/make 编译

于 2021-10-22T07:08:19.053 回答