在Win7下使用mingw和g++ 4.7.2,让std::thread/mutex正常工作

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
问题是:
如何获得c++11头文件/库的副本,即 <thread>,而不使用VS2012安装提供的文件。 附注1:我尝试了mingw-get update,但仍无法找到 <thread>。
附注2:我也在使用 -std=c++11。



谢谢,
克里斯。

1
尝试在Google上搜索类似于“rubenvb mingw threads gcc”的内容,并下载其中一个发行版。不要忘记在见到他时感谢rubenvb。 - Andy Prowl
1
这里的构建也支持线程。对于rubenvb构建,请使用experimental-stdthread版本。 - Jesse Good
1
您可能还想尝试使用VC++。它是Windows的标准编译器,虽然它有其默认设置,但只要您避免使用其GUI,它的工作还是可以令人满意的。 - James Kanze
1
@James Kanze 它太重了,令人困惑,而且我习惯于编写 makefile 并使用 gdb 进行调试。无论如何,感谢您的提示 :)。 - gifnoc-gkp
1
@TheOtherGuy 当然不会。但是,你已经必须管理几组不同构建类型的标志。这可以通过在makefile中使用if或使用$(arch)$(shell uname -s)构建路径的include来轻松处理(如果您已安装CygWin并将其添加到路径中)。 - James Kanze
显示剩余5条评论
3个回答

16

rubenvb的构建适用于x86_64,但它无法链接32位目标文件,因为缺少32位库。遗憾的是,没有i686版本的构建。 - Thomas
1
@Thomas,有一个单独的i686部分...请搜索“rubenvb i686”。 - gifnoc-gkp
2
@Thomas 32位: http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/rubenvb/ - gifnoc-gkp

6

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. 创建bash别名到新的g++ bin路径('/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进行编译


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接