12

EclipseでC++11スレッドの例をテストしてみました。しかし、プログラムを実行すると、次のメッセージが表示されます。

'std :: system_error'のインスタンスをスローした後に呼び出された終了what():操作は許可されていません'

私のシステム:ubuntu + gcc 4.7

プログラム:

#include <iostream>
#include <thread>

void worker()
{
    std::cout << "hello from worker" << std::endl;
}

int main(int argc, char **argv)
{
    std::thread t(worker);
    t.join();
}

...そして、はい、私は入れ-std=c++11-pthread中に入れC/C++ Build -> Settings -> Tool Settings -> Cross G++ Compiler -> Miscellaneous -> Other Flagsます。

コメントはありますか?

4

3 に答える 3

11

この問題は、Jonathan Wakely のコメントによって解決されました。

に追加-pthreadするC/C++ Build -> Settings -> Tool Settings -> Cross G++ **Linker** -> Miscellaneous -> Other Flagsと、プログラムは正しく機能しました。

ジョナサン、ありがとう。

于 2012-05-05T07:50:17.613 に答える
1
  1. [プロジェクト] > [プロパティ] > [C/C++ 一般] > [プリプロセッサ インクルード パスなど] > [プロバイダ] > [CDT GCC Builtin Compiler Settings]に移動-std=c++11し、コンパイラ仕様に追加します。

    また、 [ウィンドウ] > [設定] > [C/C++] > [ビルド] > [設定] > [検出]に移動するすべてのプロジェクトに対してこれを実行-std=c++11し、CDT GCC Builtin Compiler Settings仕様に追加することもできます。

     ${COMMAND} ${FLAGS} -E -P -v -dD -std=c++11 "${INPUTS}"
    
  2. Project Properties > C/C++ Build > Settings > Tool Settings > GCC C++ Compiler > Miscellaneous > Other flag、追加-pthread -std=c++11 -Wl,--no-as-needed:

     -c -fmessage-length=0 -pthread -std=c++11 -Wl,--no-as-needed
    
  3. プロジェクト プロパティ > C/C++ ビルド > 設定 > ツール設定 > GCC C++ リンカ > その他 > リンカ フラグ、追加-pthread -std=c++11 -Wl,--no-as-needed

     -pthread -std=c++11 -Wl,--no-as-needed
    
于 2016-10-26T11:50:30.470 に答える
1

std::threadEclipse でC++11 を動作させるには-pthread、コンパイル中にオプションを指定する必要があります。しかし、それだけでは不十分です。私のUbuntu 14.04では、Eclipse Keplerと以下のg ++​​ 4.9で動作します:

  1. プロジェクトを右クリックし、「プロパティ」を選択します
  2. [C/C++ ビルド] > [設定] > (タブ) [ツール設定] に移動します。
  3. 最初に 'Cross G++ Compiler' > 'Miscellaneous' > 'Other flags' を選択します。後
    に追加 -pthread-std=c++11
  4. 次に、[Cross G++ Linker] > [Libraries] を選択します。
    そして追加pthreadします(これはコマンドラインと同等です-lpthread

最後にプロジェクトを再コンパイルします。エラーが発生するはずです。

std::threadまた、使用する場合、そのオブジェクトはjoin()どこかにある必要があることも覚えておいてください。そうしないと、以下のランタイム エラーが発生する可能性があります。

アクティブな例外なしで呼び出された終了

于 2014-07-24T12:51:16.253 に答える