5

プロジェクトをコンパイルしています。次の行があります。

boost::mutex::scoped_lock ml(m_meta_mut, boost::defer_lock);
    boost::mutex::scoped_lock tl(m_tables_mut, boost::defer_lock);
    boost::lock(ml, tl);

lock is not a member of boost3番線に乗ります。私はboost1.53を使用しています(プロジェクトは1.49を推奨しています)

何が問題ですか

4

1 に答える 1

4

私のコメントをより完全な回答に変えます。boost::lock()関数はboost/thread/locks.hpp で定義されています。コンパイラ エラーが表示された場合

エラー: 'lock' は 'boost' のメンバーではありません

コンパイラは名前空間で関数lock()を見つけることができません。解決策は、コンパイルしている翻訳単位boostを追加することです。#include <boost/thread/locks.hpp>

このヘッダーには、ブースト 1.49 からブースト 1.53 への変更は見られませんが、詳しくは調べていません。include ディレクティブが変更された可能性があります。

編集: 1.67でも同じ

于 2013-06-25T17:14:39.803 に答える