2016-07-26 4 views
-1

スレッドを作成し、そのクラスのメンバとして参照を保持しようとしています。スレッドはクラスのメソッドを呼び出します。コードは次のとおりです。クラスデータメンバとしてスレッドを作成

EventQueue::EventQueue() { 

    this->dispatcherThread = std::thread(&EventQueue::dispatchEvent, std::ref(*this)); 
    this->dispatcherThread.join(); 

} 

私はビルドを行うためにQtCreatorを使用しています。このエラーが発生します:

/home/eventqueue.o:-1: In function std::thread::thread<void (EventQueue::*)(), std::reference_wrapper<EventQueue> >(void (EventQueue::*&&)(), std::reference_wrapper<EventQueue>&&)': /usr/include/c++/4.9/thread:136: error: undefined reference to pthread_create' :-1: error: collect2: error: ld returned 1 exit status

問題:

私はこの投稿に参照した Storing an std::thread object as a class member

私はいつも

+0

あなたがpthread' 'とリンクしていないようです。 – Jarod42

答えて

3

、上記のコンパイルエラーがあなたのpthreadライブラリにリンクする必要がありますが。

GCCでは、-pthreadオプションを使用してこれを行います。

例えば:g++ -pthread ...

+1

ああ愚かな私。私はQTCreatorを使用していましたが、修正は.proファイルにこれらのフラグを入れることです:QMAKE_CXXFLAGS + = -std = C++ 0x -pthread LIBS + = -pthread – Ray

+1

これ以上直接リンクはしませんが、 GCCとのコンパイルとリンクのための '-pthread'オプションです。 –

+0

ああ、そうです。更新されました。 –

関連する問題