gpt4 book ai didi

c++ - boost 池 : can I wean it from boost system?

转载 作者:搜寻专家 更新时间:2023-10-31 00:39:03 25 4
gpt4 key购买 nike

1.53.0 中的 pool 文档声称它是“仅 header ”。但是,一个最小的程序:

#include <boost/pool/pool_alloc.hpp>

int main() {
return 0;
}

以来自 boost_system 的 undefined symbol 结束,bcp 认为 boost_system 是必需的。是否有 #define 或其他方法可以解决这个问题?

最佳答案

这是一个已知错误。 https://svn.boost.org/trac/boost/ticket/7085 .

  • 如果你不需要多线程,我们可以修改pool/detail/mutex.hpp 包括<boost/thread/mutex.hpp>如网址中所述,

    ...
    #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 () {}

关于c++ - boost 池 : can I wean it from boost system?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17000542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com