我尝试交叉编译一些C ++ 11与Linux上的mingw窗口的来源。 代码使用std :: thread。
当我编译我总是得到一些错误:
$ ../mingw/cross/bin/i686-w64-mingw32-g++ -std=c++11 -I include/ test.cpp -lstdthread -otest In file included from test.cpp:4:0: ... error: 'thread' in namespace 'std' does not name a type ...
我有可能在mingw中启用c ++ 11线程? 代码编译时没有任何本地g ++的问题。
谢谢,
雷鬼凯文
-编辑-
我只是在互联网上的某个地方下载了一个mingw,因为我试图得到一个尽可能新的版本:
../mingw/cross/bin/i686-w64-mingw32-g++ -v Using built-in specs. COLLECT_GCC=../mingw/cross/bin/i686-w64-mingw32-g++ COLLECT_LTO_WRAPPER=/home/bmeier/source/mingw/cross/bin/../libexec/gcc/i686-w64-mingw32/4.8.1/lto-wrapper Target: i686-w64-mingw32 Configured with: /home/drangon/work/mingw-w64-dgn_32/source/gcc-4.8.1/configure --target=i686-w64-mingw32 --disable-nls --disable-multilib --with-gmp=/home/drangon/work/mingw-w64-dgn_32/build/for_cross --with-mpfr=/home/drangon/work/mingw-w64-dgn_32/build/for_cross --with-mpc=/home/drangon/work/mingw-w64-dgn_32/build/for_cross --with-isl=/home/drangon/work/mingw-w64-dgn_32/build/for_cross --with-cloog=/home/drangon/work/mingw-w64-dgn_32/build/for_cross --enable-languages=c,c++,objc,obj-c++ --disable-libstdcxx-pch --prefix=/home/drangon/work/mingw-w64-dgn_32/cross --with-sysroot=/home/drangon/work/mingw-w64-dgn_32/cross Thread model: win32 gcc version 4.8.1 (GCC)
凯文
已经有一个std :: thread和sync原语的本地实现,可以和任何C ++ 11版本的MinGW一起工作: https : //github.com/meganz/mingw-std-threads
基本上MinGW不支持windows上的线程,请看下面的链接: http : //www.cplusplus.com/forum/windows/82461/
特别是_GLIBCXX_HAS_GTHREADS没有被定义,并且头文件线程中的类线程需要它。 (它是建立在gthreads)。
你应该尝试使用boost :: thread来获得兼容win / linux的线程类
很可能你可能忘记了包含线程头文件#include <thread>