C BOOST 未定义对\`boost::filesystem::detail::copy_file 的引用

新手上路,请多包涵

我不知道为什么 boost::filesystem::copy_file 我带来麻烦。

对`boost::filesystem::detail::copy_file 的未定义引用

// g++ -std=c++11 test.cpp -lboost_filesystem -lboost_system -lrt -lboost_wave

#include <boost/filesystem.hpp>

int main()
{

    boost::filesystem::create_directory("aaa");
    // ok

    boost::filesystem::copy_file("f1","f2");
    // /tmp/ccNWZltB.o: In function `boost::filesystem::copy_file(boost::filesystem::path const&, boost::filesystem::path const&)':
    // test.cpp:(.text._ZN5boost10filesystem9copy_fileERKNS0_4pathES3_[_ZN5boost10filesystem9copy_fileERKNS0_4pathES3_]+0x26): undefined reference to `boost::filesystem::detail::copy_file(boost::filesystem::path const&, boost::filesystem::path const&, boost::filesystem::copy_option, boost::system::error_code*)'
    // collect2: error: ld returned 1 exit status

    return 0;
}

我没有从 boost 的源代码或其 帮助 中得到灵感:

   inline
  void copy_file(const path& from, const path& to,   // See ticket #2925
                 BOOST_SCOPED_ENUM(copy_option) option, system::error_code& ec)
                                       {detail::copy_file(from, to, option, &ec);}

即使是这样一个 简单的例子 也不适合我。

平台: Linux Ubuntu 64

原文由 ar2015 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

此问题有解决方法,更换

#include <boost/filesystem.hpp>

#define BOOST_NO_CXX11_SCOPED_ENUMS
#include <boost/filesystem.hpp>
#undef BOOST_NO_CXX11_SCOPED_ENUMS

或者,最好将 -DBOOST_NO_CXX11_SCOPED_ENUMS 添加到您的编译器标志中

原文由 J.J. Hakala 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏