gpt4 book ai didi

c++ - 操作系统 : Linker error for boost/filesystem with Xcode 8 and C++ 11

转载 作者:行者123 更新时间:2023-11-28 05:09:21 25 4
gpt4 key购买 nike

这是我关于 SO 的第一个问题。开始了:

我正在尝试在 Xcode 8 的 C++ 项目中使用 boost 库——特别是文件系统部分。

问题:

Apple Mach-O Linker (ld) Error Group "boost::filesystem::detail::dir_itr_close(void*&, void*&)", referenced
from:

"boost::filesystem::detail::directory_iterator_construct(boost::filesystem::directory_iterator&, boost::filesystem::path const&, boost::system::error_code*)", referenced from:

"boost::filesystem::detail::directory_iterator_increment(boost::filesystem::directory_iterator&, boost::system::error_code*)", referenced from:

"boost::filesystem::detail::status(boost::filesystem::path const&, boost::system::error_code*)", referenced from:

"boost::system::system_category()", referenced from:

"boost::system::generic_category()", referenced from:

clang: error: linker command failed with exit code 1 (use -v to see invocation)

代码:

int main(int argc, char *argv[])
{
std::string dir_path = "foo/bar";

if ( !boost::filesystem::exists( dir_path ) ) return false;

boost::filesystem::directory_iterator end_itr; // default construction
yields past-the-end
for ( boost::filesystem::directory_iterator itr( dir_path );
itr != end_itr;
++itr )
{
std::cout << itr->path();
}

return 0;

我做了什么:

  1. brew install boost --build-from-source --c++11 .我在某处读到过这个 --c++11标志应该修复它,--build-from-source是必需的,以便该标志实际上传递给 b2 编译器。
  2. #include <boost/filesystem.hpp>在我的项目中。
  3. 已添加 /usr/local/include到我的 Header Search PathsBuild Settings 下。 (也尝试在其中添加 /usr/local/include/boost/usr/local/include/boost/system,但无济于事。此外,在我的任何标题搜索路径上设置 递归 选项会使 Xcode 崩溃)。
  4. 已添加 /usr/local/lib到我的图书馆搜索路径
  5. 已添加 -lboost_system -lboost_filesystem到我的Other Linker Flags。 (还尝试添加 -lboost_system-mt ,我看到了其他答案的建议)。
  6. 试图做什么this answer说,但我的Build Phases部分没有Link Libraries to Binary部分。只是Target DependenciesCompile Sources
  7. 顺便说一下,重新启动 Xcode 和/或我的笔记本电脑没有用。我在某处读到有人可以通过在安装 boost 之后 重新安装 Xcode 来让它工作,但是嗯.. idk.

附加信息

  • 只是想 #include <boost/filesystem.hpp>导致最后 2 个链接器错误(关于 boost::system::system_category()generic_category() )发生。但是,使用 #include <boost/regex.hpp> , 程序将构建成功。
  • 我也按照以下步骤成功安装了 boost here并能够运行 boost/文件系统教程中的程序。
  • 我考虑将我需要使用的文件作为 argvs[] 传递到我的程序,但我可能要处理每个文件夹中数以万计的文件,我怀疑这可能会变得很丑陋。
  • 操作系统版本:10.12.4
  • Xcode 版本:8.3.2

我对 C++ 非常陌生,对 Xcode 几乎同样陌生。我花了大约 8 小时试图让它工作。

非常感谢您的帮助!

最佳答案

我遇到了同样的错误,这就是我修复它的方法。

Build Settings > Header Search Paths > (Add) /usr/local/include
Build Settings > Library Search Paths > (Add) /usr/local/lib
Build Settings > Other Linker Flags > (Add) -l boost_system -l boost_filesystem

我希望这对某人有帮助。

关于c++ - 操作系统 : Linker error for boost/filesystem with Xcode 8 and C++ 11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43833425/

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