我正在编译一个项目。它有以下几行:
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 boost
。我用的是boost1.53(项目推荐1.49)
问题是什么
最佳答案
将我的评论变成更完整的答案。 boost::lock()
功能是defined in boost/thread/locks.hpp .当你看到编译器错误时
error: ‘lock’ is not a member of ‘boost’
编译器找不到函数 lock()
在boost
命名空间。
解决方案是添加#include <boost/thread/locks.hpp>
在您正在编译的任何翻译单元中。
我没有看到此 header 从 boost 1.49 到 boost 1.53 的变化,尽管我没有仔细查看。可能包含指令已更改。
编辑: 1.67还是一样
关于c++ - boost::lock 在 boost 1.53 中无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17303167/