1.53.0 中的文档pool
声称它是“仅标题”。但是,一个最小的程序:
#include <boost/pool/pool_alloc.hpp>
int main() {
return 0;
}
以未定义的符号结尾boost_system
,并bcp
认为这boost_system
是必需的。有#define
什么办法可以治愈吗?
这是一个已知的错误。https://svn.boost.org/trac/boost/ticket/7085。
如果您不需要多线程,我们可以修改pool/detail/mutex.hpp
为不包含<boost/thread/mutex.hpp>
,如 URL 中所述,
...
#if defined(BOOST_HAS_THREADS) && !defined(BOOST_NO_MT) && !defined(BOOST_POOL_NO_MT)
#include <boost/thread/mutex.hpp>
#endif
...
或者,如果您无法修改文件,请伪造<boost/thread/mutex.hpp>
已定义的编译器:
#define BOOST_POOL_NO_MT // disable multi-threading
#define BOOST_THREAD_MUTEX_HPP // define the #include-guard to disable the header
#include <boost/pool/pool_alloc.hpp>
int main () {}
或者,如果您确实需要多线程,但允许使用 C++11,我们可以使用std::mutex
来替换boost::mutex
:
#define BOOST_THREAD_MUTEX_HPP
#include <mutex>
namespace boost {
using std::mutex;
}
#include <boost/pool/pool_alloc.hpp>
int main () {}