【问题标题】:boost::regex linking issue in Xcode 4.5.2Xcode 4.5.2 中的 boost::regex 链接问题
【发布时间】:2012-11-26 22:22:30
【问题描述】:

我相信这个问题已经以许多不同的形式被问过(提前道歉)- 我正在使用 Xcode 4.5.2

非常简单的无操作终端应用程序如下...

#include <boost/regex.hpp>
int main(int argc, const char * argv[])
{
    boost::regex regday_pattern("\\");
    return 0;
}

了解 boost 中的正则表达式需要一个库,而不仅仅是一个 boost 标头。对于 xcode 和下面的 unix 环境相对较新,我对如何需要我的设置有点困惑,这样我就不会收到以下链接错误...

架构 x86_64 的未定义符号: “提升::basic_regex

对于这个问题的任何帮助将不胜感激 - 我已经阅读了一些对类似问题的回复,但在将这些回复与我的情况联系起来时遇到了麻烦。 TIA

【问题讨论】:

  • 你有没有想过这个问题?如果你这样做了,我和其他人可能会从答案中受益。
  • @TreverDixon 在下面看到我的答案

标签: c++ regex boost xcode4.5


【解决方案1】:

您可能会遇到链接器错误,因为您实际上并未构建 Boost.Regex 库。

请遵循 Boost 文档中的 build instructions

在 shell 中发出以下命令(不要输入 $; 表示 shell 的提示符):

$ cd path/to/boost_1_53_0 
$ ./bootstrap.sh --help 

选择您的 配置选项并再次调用 ./bootstrap.sh 没有 --help 选项。除非您在系统的 /usr/local/ 目录中具有写入权限,否则您可能至少要使用

$ ./bootstrap.sh --prefix=path/to/installation/prefix 

安装 别的地方。另外,考虑使用--show-libraries--with-libraries=library-name-list 选项可限制您在构建所有内容时将经历的漫长等待。最后,

$ ./b2 install 

将 Boost 二进制文件保留在 lib/ 的子目录中 您的安装前缀。您还将找到 Boost 的副本 安装前缀的include/ subdirectory 中的标头,所以 您以后可以将该目录用作#include 路径来代替 Boost 根目录。

最后,确保您可以构建和运行 Boost 文档中的 Regex example

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 2012-12-31
    • 1970-01-01
    • 2018-12-04
    相关资源
    最近更新 更多