使用mingw和g++4.7.2让std::thread/mmutex在Win7下工作

Getting std::thread/mutex to work under Win7 with mingw and g++ 4.7.2

本文关键字:thread mmutex Win7 工作 std mingw g++4 使用      更新时间:2023-10-16


问候,

最近,我搬出了我的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

问题是:

如何获得c++11 headers/libs的副本,即<thread>,而不使用VS2012安装提供的那些

p.S.#1我尝试更新,但它仍然找不到<线程>
P.S.#2我也在使用-std=c++11


真诚,
克里斯。

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

  1. MinGW构建现在已集成到MinGW-w64项目中
  2. MinGW构建(项目是旧的,不会更新,见上文)
  3. MinGW-w64 rubenvb 64位和32位版本

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

同时查看此处:https://github.com/meganz/mingw-std-threads这是std::thread和其他功能的一个更轻的本机实现,不使用pthreads的win32端口。

  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并添加:设置(CMAKE_CXX_COMPILER/mingw/x86_64-8.1.0-release-posix-seh-rt_v6-rev0/mingw64/bin/g++)

  5. 使用Cmake/make 编译