使用mingw和g++4.7.2让std::thread/mmutex在Win7下工作
Getting std::thread/mutex to work under Win7 with mingw and g++ 4.7.2
问候,
最近,我搬出了我的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线程、原子操作等。
- MinGW构建现在已集成到MinGW-w64项目中
- MinGW构建(项目是旧的,不会更新,见上文)
- MinGW-w64 rubenvb 64位和32位版本
请注意,MinGW-w64不仅是64位的,而且确实支持它,不像旧的MinGW(.org),它缺少了很多新的Vista+API,当然还有64位的支持。
同时查看此处:https://github.com/meganz/mingw-std-threads这是std::thread和其他功能的一个更轻的本机实现,不使用pthreads的win32端口。
-
转到:https://sourceforge.net/projects/mingw-w64/files/?source=navbar.
-
查找并下载。
MinGW-W64 GCC-8.1.0:
x86_64-posix-seh
-
解压缩并移动到MinGW文件夹。
如果使用g++进行编译:
-
为新的g++bin路径创建bash别名('/mingw/x86_64-8.1.0-release-posix-seh-rt_v6-rev0/mingw64/bin/g++')
-
使用新的g++bin编译。
如果您正在使用Cmake:
-
创建CmakeLists.txt并添加:设置(CMAKE_CXX_COMPILER/mingw/x86_64-8.1.0-release-posix-seh-rt_v6-rev0/mingw64/bin/g++)
-
使用Cmake/make 编译
- 在std::thread中,joinable()然后join()线程安全吗
- <Windows>为什么 std::thread::native_handle 返回类型为"long long unsigned int"的值,而不是 void*(又名 HANDLE)?
- 分离一个静态常量 std::thread?
- 尝试使用 std::vector<std::thread时出现静态断言失败错误>
- 使用 thread 类在 C++ 中构造线程的动态数组时出错
- 当指向对象的指针作为参数传递给 std::thread 时,内存可见性
- 如何从 std::thread 返回值
- 在C++中使用并行化的预期速度是多少(不是 OpenMp,而是 <thread>)
- 将 std::thread by 值推送到列表中
- 转发变量参数列表以模拟 std::thread
- 嵌入式设备 -> std::thread -> FreeRTOS?
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- std::thread 增加 DLL 引用计数,从而防止卸载 DLL
- 如何防止 std::thread 在 QT 中冻结 GUI?
- 对带有唯一指针的 std::thread 使用类成员函数时出现编译错误
- C++ - Thread Pool
- 为什么参数在构造 std::thread 时移动两次
- std::thread::_Invoker 使用线程编程时出错
- 在线程 A 中创建一个 std::thread 对象,在线程 B 中连接
- 使用mingw和g++4.7.2让std::thread/mmutex在Win7下工作