【问题标题】:Linker Flag/Boost not found -- linking Boost filesystem with XcodeLinker Flag/Boost not found -- 将 Boost 文件系统与 Xcode 链接
【发布时间】:2014-07-05 14:23:58
【问题描述】:

我正在尝试在 Xcode 中使用 Boost Filesystem 库。

我用brew install boost 安装了Boost,并且成功了。

原来 Boost 没有链接,所以我运行了 brew link --overwrite Boost,它起作用了。

我正在我的项目中尝试#include <boost/filesystem.hpp>,但到目前为止还没有成功。

一开始Xcode找不到<boost/filesystem.hpp>,所以我加了

/usr/local/lib
/usr/local/include

到我的目标和项目的标题搜索路径。

这解决了最初的问题,但是 Xcode 找不到 boost_system。 以下是实录:

Undefined symbols for architecture x86_64:
  "boost::system::system_category()", referenced from:
      ___cxx_global_var_init2 in main.o
  "boost::system::generic_category()", referenced from:
      ___cxx_global_var_init in main.o
      ___cxx_global_var_init1 in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我将 -lboost_system 链接器标志添加到我的项目中,现在我收到此错误:

ld: library not found for -lboost_system
clang: error: linker command failed with exit code 1 (use -v to see invocation)

而且它绝对是正确的链接器标志,所以也许 Boost 安装不正确。 如果我找到解决方案,我会更新这个问题,但如果我能帮助解决这个问题,我将不胜感激。

【问题讨论】:

    标签: c++ xcode boost boost-filesystem


    【解决方案1】:

    您的标头搜索路径中只需要/usr/local/include库搜索路径中需要/usr/local/lib,链接器才能找到库。

    【讨论】:

    • 头文件搜索路径告诉编译器在哪里可以找到非标准的包含文件,库搜索路径告诉链接器在哪里可以找到非标准库。
    【解决方案2】:

    在 xcode 6 中遇到了同样的问题。用户标题搜索路径和库搜索还可以。仍然显示链接错误。我通过在项目目标设置的其他链接器标志中添加-lboost_system-mt 解决了这个问题

    【讨论】:

      猜你喜欢
      • 2012-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      • 2016-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多