【问题标题】:c++ boost::filesystem undefined reference to `boost::filesystem3::path::root_name() const'c++ boost::filesystem undefined reference to `boost::filesystem3::path::root_name() const'
【发布时间】:2011-12-19 19:33:29
【问题描述】:

在尝试编译利用 boost::filesystem 库的代码时,我一直遇到错误。我不明白我得到的任何编译器输出。这是我从http://www.highscore.de/cpp/boost/dateisystem.html#dateisystem_pfadangaben复制的代码:

#include <boost/filesystem.hpp>
#include <iostream>

int main(){
  boost::filesystem::path p("C:\\Windows\\System");
  std::cout << p.root_name() << std::endl; 
  std::cout << p.root_directory() << std::endl; 
  std::cout << p.root_path() << std::endl; 
  std::cout << p.relative_path() << std::endl; 
  std::cout << p.parent_path() << std::endl; 
  std::cout << p.filename() << std::endl; 
} 

我有 Ubuntu 11.10,我已经安装了 libbost-dev 和 g++。这是终端的样子:

sam@sam-MT6707:~/Dokumente/Programming/Projekte/FTP-abgleicher$ g++ -o pr3 pr3.cpp
/tmp/ccrN7yHl.o: In function `main':
pr3.cpp:(.text+0x3b): undefined reference to `boost::filesystem3::path::root_name() const'
pr3.cpp:(.text+0x7e): undefined reference to `boost::filesystem3::path::root_directory() const'
pr3.cpp:(.text+0xc1): undefined reference to `boost::filesystem3::path::root_path() const'
pr3.cpp:(.text+0x104): undefined reference to `boost::filesystem3::path::relative_path() const'
pr3.cpp:(.text+0x147): undefined reference to `boost::filesystem3::path::parent_path() const'
pr3.cpp:(.text+0x18a): undefined reference to `boost::filesystem3::path::filename() const'
pr3.cpp:(.text+0x1e8): undefined reference to `boost::filesystem3::path::stem() const'
pr3.cpp:(.text+0x22b): undefined reference to `boost::filesystem3::path::extension() const'

/tmp/ccrN7yHl.o: In function `__static_initialization_and_destruction_0(int, int)':
pr3.cpp:(.text+0x364): undefined reference to `boost::system::generic_category()'
pr3.cpp:(.text+0x36e): undefined reference to `boost::system::generic_category()'
pr3.cpp:(.text+0x378): undefined reference to `boost::system::system_category()'
/tmp/ccrN7yHl.o: In function `boost::filesystem3::path::codecvt()':
pr3.cpp:(.text._ZN5boost11filesystem34path7codecvtEv[boost::filesystem3::path::codecvt()]+0x7): undefined reference to `boost::filesystem3::path::wchar_t_codecvt_facet()'
collect2: ld gab 1 als Ende-Status zurück

^Translation of last line: ld returned an end status of 1

我做错了什么?

【问题讨论】:

  • 下次,请突出显示您的代码并点击Ctrl+K 或使用编辑器中的{} 按钮。
  • 标签 german 作为 2012 cleanup 的一部分被删除。

标签: c++ boost g++


【解决方案1】:

您必须与-lboost_filesystem -lboost_system 链接。 Boost 文件系统不是一个只有头文件的库;相反,它依赖于已编译的组件。

【讨论】:

  • 你的意思是我需要把命令行改成:g++ -lboost_filesystem -o pr3 pr3.cpp
  • 我在命令行末尾添加了 -lboost_filesystem:g++ -o pr3 pr3.cpp -lboost_filesystem 但是,我现在得到这个输出:/usr/bin/ld: /tmp/ccKa219G.o : 未定义对符号'boost::system::system_category()' /usr/bin/ld: 注意:'boost::system::system_category()' 在 DSO /usr/lib/libboost_system.so.1.46 中定义的引用.1 所以尝试将它添加到链接器命令行 /usr/lib/libboost_system.so.1.46.1:无法读取符号:无效操作 collect2:ld 返回结束状态 1
  • @KG6ZVP:同时添加-lboost_system
  • boost.org/doc/libs/1_47_0/more/getting_started/… 在标题下只有库会告诉你哪些需要库引用。
  • @Beached 当我看到你的链接时,我正想为所有这些提升编译的东西寻求参考。谢谢!
猜你喜欢
  • 2016-06-02
  • 1970-01-01
  • 2012-07-06
  • 1970-01-01
  • 2011-01-24
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 2018-02-18
相关资源
最近更新 更多