【问题标题】:Linking Boost to my C++ project in Eclipse在 Eclipse 中将 Boost 链接到我的 C++ 项目
【发布时间】:2011-01-31 23:03:36
【问题描述】:

我正在尝试让 Boost 库在我的 Eclipse 中的 C++ 项目中工作。在 Boost 中使用纯标头库时,我可以成功构建,例如“入门”指南中使用 lambda 标头的示例简单程序。

我无法让我的项目成功链接到正则表达式 Boost 库,如指南后面所示。在我的项目属性 -> c/c++ 构建 -> 设置 -> 工具设置选项卡 -> 库下,我已将“libboost_regex”添加到“库”框,以及“C:\Program Files\boost\boost_1_42_0\bin.v2\libs " 到库搜索路径框,因为这是所有 .lib 文件所在的位置。我什至尝试将“libboost_regex-mgw34-mt-d-1_42.lib”添加到库框中,而不是“libboost_regex”,因为这是确切的文件名,但这也不起作用。

当我尝试构建我的项目时,我不断收到“找不到 -llibboost_regex”的错误消息。关于如何解决此问题的任何想法?

编辑:在 Windows XP 上,使用 mingw,我也尝试过“boost_regex”..

【问题讨论】:

  • 不应该是-lboost_regex吗?
  • 你在哪个平台上?您使用的是什么编译器/链接器?
  • 是的,我使用 bjam 构建了 boost,如入门指南中所述。我知道这有效,因为 .lib 现在存在。例如,正则表达式文件在 C:\Program Files\boost\boost_1_42_0\bin.v2\libs\regex\build\gcc-mingw-3.4.2\debug\link-static\threading-multi 中,同样有一个版本文件夹以及调试文件夹

标签: c++ regex eclipse boost linker


【解决方案1】:

我刚刚完成了安装 MinGW、编译 boost 和安装 Eclipse CDT 的整个过程,我可以使用 boost:regex 编译简单的程序。我会写下所有步骤。我希望这能有所帮助。

我已经在默认位置安装了 MinGW 和 MSYS。

这是我构建 boost 的步骤:

  • http://sourceforge.net/projects/boost/files/boost-jam下载 boost-jam-3.1.18-1-ntx86.zip
  • 将 bjam.exe 放在 PATH 中的某个位置
  • C:\mingw\boost_1_42_0 中解压提升
  • 打开一个 msys 终端窗口和cd /c/mingw/boost_1_42_0
  • 在 boost 目录中运行 bjam --build-dir=build toolset=gcc stage

要配置 Eclipse:

  • the update site 将 CDT 添加到 Eclipse 3.5
  • 创建一个新的 C++ 项目
  • 项目菜单下选择属性
  • 确保配置为Debug [Active]
  • 在“C/C++ 常规”>“路径和符号

    • 包含选项卡下选择GNU C++语言并添加C:\MinGW\boost_1_42_0
    • 库路径选项卡下添加C:\MinGW\boost_1_42_0\stage\lib
  • 在“C/C++ 构建”>“设置

    • 选择 MinGW C++ 链接器 >
    • 单击库 (-l) 的添加按钮
    • 键入libboost_regex-mgw34-mt-d (不带.lib)

然后,您可以对 Release 配置执行相同的步骤,但改用 libboost_regex-mgw34-mt。还要确保你的源文件包含<boost/regex.hpp>

【讨论】:

  • 非常感谢!我将库路径目录更改为 stage\lib 目录并添加了 libboost_regex-mgw34-mt-d 并且它起作用了!
  • 我发现这对日食方面非常有帮助。我不得不将它与另一个问题结合使用,以帮助我完成最新的目录结构和构建过程以进行提升:stackoverflow.com/questions/5299468/…(答案是 7 岁,所以没有抱怨。只是更新!)
【解决方案2】:

要在 Eclipse 中链接到 boost 库,您需要设置 Eclipse 的项目库路径(带有 -L 的那个)和库的名称(带有 -l 的那个)。

必须删除前缀“lib”和库名称的扩展名:- 例如:libboost_regex.a 应指定为 boost_regex。

【讨论】:

  • 谢谢!我在 mac os x 上有一个 nghtmare。最后只为 -l 输入“boost_system”,我的 -L 指向“bin.v2/libs”。
  • 这应该是正确的答案。它解决了所有操作系统上的问题,并且与版本无关。
【解决方案3】:

我相信您的 l​​ib 路径指向错误的位置。这些库将安装到:

boost_install_dir\boost_1_42\lib

我认为默认的 boost_install_dir 是“C:\Program Files\Boost”(不确定,因为我不使用默认安装目录)。

【讨论】:

  • 我有一个“libs”目录,但我的 boost 目录中没有“lib”,但这实际上并不包含 bin.v2\libs 目录中的编译文件
猜你喜欢
  • 2018-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
相关资源
最近更新 更多