--編集 MinGW GCC 8.4.1 を使用したい場合、threads/mutex/futures/ atomics は Win32 スレッダー バージョンをダウンロードせず、Posix バージョンをダウンロードします。 - 編集
私の MinGW のインストールは次のとおりです: x32-4.8.1-release-win32 (スレッドとして) - sjlj rev 5
MinGW GCC 4.8.1 (リビジョン 5) が C:\MinGW\mingw32 にインストールされていることを解凍して正しく確認しました。 正しいパスで最新かつ最高のコンパイラを探すようにコード ブロックを設定しました (これは確実です)。#include iostreamを使用して通常のプログラムをコンパイルできます。さて、 #include スレッドを 使用してプログラムを実行しようとすると、「エラー: 'スレッド' は 'std' のメンバーではありません」というメッセージが表示されます。
ここに私がやったことと私が試したことがあります:
ここcplusplus.comで、一種のテンプレートまたはチュートリアルに 従っています。
Webページに表示されているコードとまったく同じコードを持っています(下に向かって)。
コード ブロックで、コンパイラ フラグ「g++ を C++11 ISO 言語標準に準拠させる -std=c++11」を使用しようとしました。
また、フラグ「g++ を今後の C++0x ISO 言語標準に準拠させる -std=c++0x」を試しました。
私は両方を同時に試しましたが、一度に1つずつ試しましたが、マスはありません。これらのコマンドも手動で試しました。
手動で試した別のコマンドは、スレッド ヘッダーで推奨されていた -std=gnu++11でした。
--EDIT __cplusplusは < 201103L のように見えますが、これはスレッド ヘッダーに記載されています (または定義されています)。これは、-std=c++11 を手動で使用した場合にのみ発生します。何らかの理由で C::B が手動で指定した場合は削除されるため、このフラグを使用するにはチェック ボックスを使用する必要があります... --EDIT
[Toolchain Executables] タブのコンパイラ設定は次のとおりです。
C コンパイラ: i686-w64-mingw32-gcc-4.8.1.exe
C++ コンパイラ: i686-w64-mingw32-c++.exe
動的リンカー: i686-w64-mingw32-c++.exe
静的リンカー: ar.exe
デバッガー: GDB/CDB デバッガー: デフォルト
リソース コンパイラ: windres.exe
メイクプログラム: mingw32-make.exe
bin フォルダー内の他の実行可能ファイルを使用しようとしましたが、まだ運がありません... GCC が C++11 またはスレッドをサポートしているかどうか疑問に思い始めています!?
MinGW GCC、コードブロック、または一般的にスレッドを動作させることができた人はいますか? もしそうなら、どのようにしましたか?役立つリンクはありますか?何かアドバイス?
PS posix や SFML のような他の SDK のようなスレッド化の方法が他にもあることは知っています (私はこれでスレッド化を試みました)。しかし、私はGCCスレッドを使用したいのですが、必要なファイルがすべてあるのに、なぜそれが難しいのか、非常に困惑しています...
--EDIT コード ブロックの外側でプログラムを手動でコンパイルすると、g++ c++ を使用するか i686-w64-mingw32-g++/c++ を使用するかに関係なく、同じエラーが発生することがわかりました。
ファイルをビルドするために実行するコマンドは次のとおりです。
C:\MinGW\mingw32\bin>g++.exe -D__GXX_EXPERIMENTAL_CXX0X__ -o0 -g3 -Wall -c -fmes sage-length=0 -std=c++11 -Wc++11-compat -o obj\Debug\main .o "F:\C Projects\Code Blocks\thread\main.cpp"
それでもエラーが返されます:「スレッド」は「std」のメンバーではありません
これは悪いビルドでしょうか?私は他のリビジョンを試してみます... --EDIT