gpt4 book ai didi

regex - 如何使用 XCode 构建 boost "Getting Started"示例?

转载 作者:行者123 更新时间:2023-12-04 12:44:00 24 4
gpt4 key购买 nike

因此,假设您想要构建 Boost“入门”示例并使用 Xcode 项目链接到它们,而不是在命令行中构建。您尝试使用 header-only 选项,它工作正常。

但是然后您采用示例源:

#include <boost/regex.hpp>
#include <iostream>
#include <string>

int main()
{
std::string line;
boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );

while (std::cin)
{
std::getline(std::cin, line);
boost::smatch matches;
if (boost::regex_match(line, matches, pat))
std::cout << matches[2] << std::endl;
}
}

您执行以下操作:
  • 使用 ./bjam install
  • 构建 boost 库
  • 打开 Xcode 并创建一个新的 C++ 命令行实用程序项目。
  • 将 libboost_regex.dylib 拖入 Groups & Files 树 View 中的 Products 文件夹(选中允许复制文件的选项)
  • 设置项目选项,使 Header Search Paths 指向 Boost include 文件夹
  • 构建并运行项目!

  • 遗憾的是,如果您打开了控制台(运行 | 控制台),您将看到一个错误,提示它找不到 dylib:
    dyld: Library not loaded: libboost_regex.dylib
    Referenced from: /Users/matt/Documents/Boost/test/GettingStarted/build/Debug/GettingStarted
    Reason: image not found

    因此,不知道让 Xcode 执行此操作的更好方法,您将 dylib 复制到 your_project/build/debug/并运行!万岁!

    你是一个注重细节的人,你在标准输入中输入一些东西来尝试一下:
    > Subject: foo bar baz
    > foo bar baz

    然后它出现段错误。
    Program received signal:  “EXC_BAD_ACCESS”.

    确认!

    但是不要害怕。我知道问题是什么!如果没有人打败我,我会在午饭后发布解决方案。

    最佳答案

    这里的问题是 boost 的默认构建不能很好地与您项目的调试构建配合使用。您需要使用调试变体来构建 boost,它是这样完成的:

    ./bjam install variant=debug define=_GLIBCXX_DEBUG --with-regex
    _GLIBCXX_DEBUG实际上是 Xcode 项目中导致冲突的选项。

    然后,您可以将库的调试版本与您的调试 Xcode 项目链接起来。 (我认为这就是 MacPorts 预编译二进制文件的生成方式。)

    请记住,您可以使用 bjam 变体同时构建多个目标。

    另外:如果重建后它不起作用,请检查以确保您链接的库的版本实际上是您刚刚重建的版本!

    另外:相反,它可能会删除 _GLIBCXX_DEBUG从您的调试配置定义。在 Targets 中双击您的可执行文件以打开项目选项,然后删除 _GLIBCXX_DEBUG来自预处理器宏。

    希望这可以帮助。

    关于regex - 如何使用 XCode 构建 boost "Getting Started"示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1882571/

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