私は、ソースからビルドするサードパーティのlib(Box2D-MT)を使用するアプリケーションを構築しています。リンクする際、私はこの未定義の参照のエラーを取得:。std :: thread :: _ M_start_threadへの未定義の参照を取得する
b2Threading.cpp:(.text._ZNSt6threadC2IM12b2ThreadPoolFviEJPS1_iEEEOT_DpOT0_[_ZNSt6threadC5IM12b2ThreadPoolFviEJPS1_iEEEOT_DpOT0_]+0xa4):
undefined reference to 'std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)())'
私はグラムを構築しています++と
-lBox2D -lpthread -lrt -ldl -lstdc++
とのリンクも、私は++のlibstdcに探して
-std=c++11
でコンパイルしています同様のシンボルが存在することがわかります(「T」です):
nm -C /usr/lib/gcc/x86_64-linux-gnu/4.9.2/libstdc++.a | grep _M_start_thread
0000000000000000 T std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>)
ですが、このオーバーロードは2番目のパラメータを使用しません。
私はすべてのインターネットを同様のもので検索しましたが、誰もその前に(この文脈では)この問題を抱えていないようです。
なぜこのエラーが発生するのか、どのように解決できるかについてのヒントはありますか?
'-pthread'の代わりに' -pthread'コンパイラフラグを使います。コンパイルとリンクに使用します。 –
@πάνταῥεthatはこれを試しましたが、まったく同じエラーが発生します –
** ** ** ** ** **完全なリンクコマンドは何ですか? –