当前位置: 代码迷 >> 综合 >> 在 MinGW 下使用 C++ 标准线程库
  详细解决方案

在 MinGW 下使用 C++ 标准线程库

热度:0   发布时间:2023-12-08 09:19:33.0

MinGW 已经支持 gcc 4.5 了,它是目前支持 C++0x最完整的编译器了。我用它成功的写了些自己好玩的项目。

不过这个发行版并不完整支持 gcc 的 C++ 标准线程库,看了些资料,要修改一下它带的 C++ 标准库代码,重编译就可以。研究了一天,终于搞定了,主要参考了这篇文章,但是也还是要有些改动。记录一下。

首先是环境,gcc 4.5用的 C++ 库是 libstdc++ v3,这个库的完整代码包含在 gcc 代码里,去 GNU 下载一份 gcc 4.5 的代码,把 libstdc++ 拿出来即可。

其次 libstdc++ 的线程是基于 pthread 的,在 Windows 下面现在有几种办法使用 pthread:一是 pthread-win32 库,这是个开源的 pthread 实现,很幸运 MinGW 发行版里面已经带了这个库;另一个可能的办法是微软自家的 Subsystem for Unix-based Applications (SUA),它在 Windows 7 Ultimate 和 Windows Server 2008 R2 上面是可选装的 Windows 组件,我还没有尝试,以后有空玩玩。

然后是修改代码和编译:

  1. 修改 MinGW/lib/gcc/mingw32/4.5.0/include/c++/mingw32/bits/error_constants.h
    里面的 operation_not_permitted = EPERM 这一行被注
  相关解决方案