c++ - 使用 MinGW 和 CodeBlocks 安装 Boost 库

标签 c++ regex boost mingw

我第一次尝试使用 Boost 库,我选择了一个名叫 Regex 的漂亮女孩。

我已经在我的机器上安装了库(自动构建?),但我收到上述错误(找不到 -lboost_regex)。我将 Code::Blocks 与 MinGW 和 C++0X 编译器标志一起使用。

我有

  • 将“搜索目录”指向安装目录
  • -lboost_regex 标记添加到链接器

但运气不好。有人可以帮我解决这个问题吗?


更新

现在一切正常。对于这个问题的新手,我在下面的答案中添加了一些进一步的注释。

(另外,更改了问题的标题,因为事实证明它是一个比我刚开始时更广泛的问题。)

最佳答案

根据我的第一次构建经验,这里有一些可以帮助新手的链接和提示。我直接从 zip 文件构建库。我在 MinGW 上构建,并在 IDE 中使用了 CodeBlocks。

  1. 下载 Boost zip,在某个地方解压(我将那个地方称为 $boostdir)
    • 解压后很大,> 300MB
  2. 将 MinGW bin 添加到 PATH var
    • 构建 Boost 时,它需要访问 MinGW 可执行文件
  3. 构建b2.exebjam.exe
    • documentation适用于 Windows assumes MSVC compiler可用。
    • 如果是,您显然可以像文档中所说的那样使用 bootstrap.bat
    • 如果不是(像我的),您必须在第 4 步和第 5 步中自己构建 exe 文件。
  4. 在 CMD 中,导航到 $boostdir/tools/build/v2/engine
  5. 运行 build.bat mingw(将构建 b2.exebjam.exe)
  6. 现在您已经根据您的系统规范定制了 b2bjam。导航回 $boostdir 并准备开始构建库。
    • Boost 将在当前目录中创建一个新的 bin.v2 目录。
    • 所有库都将放入 bin.v2
    • 出于某种原因,这是一个“中间”目录
    • 此步骤无需执行任何操作,只需提供一些额外信息 :)
  7. 运行 b2 toolset=gcc --build-type=complete
    • 这需要很长时间,大约 1 - 2 小时
    • 你会知道它是否有效。如果您认为有问题,那就是它没有用。
    • 构建可以使用各种flags

现在你已经全部构建好了。是时候设置代码块了。

  1. 将你的编译器指向头文件
    • 右键单击您的项目 -> Build Options -> Search Directories 选项卡 -> Compiler 选项卡 -> 添加 $boostdir 地址
  2. Boost 已经根据您当前的系统规范为您想要的库构建了一个 DLL。查看$boostdirstage\lib\目录
    • 此 DLL 稍后将在链接器中使用,因此请先不要关闭其资源管理器窗口
    • 我的在 C:\Program Files\Boost_1_52\stage\lib\libboost_regex-mgw44-1_52.dll
    • 我认为文档有一个聪明的方法来做到这一点,但我还没有尝试过
    • 现在构建完成后,可以删除步骤 #6 中的“中间”目录
  3. 将您的链接器指向该 DLL 的目录
    • 右键单击您的项目 -> 构建选项 -> 搜索目录选项卡 -> 链接器选项卡 -> 添加 该目录地址 (blah\blah\blah\stage\lib\)
  4. 将该 DLL 标志添加到您的链接器设置中
    • 我的是 -lboost_regex-mgw44-1_52
  5. 深呼吸,向你的神祈祷,然后启动测试。

可能有帮助或混淆的更多文档:

Code::Blocks 网站有 a version of this直到我接近搜索结束时我才找到。它很有帮助,但有一些奇怪的事情。 This post也很有帮助。

祝你好运!

关于c++ - 使用 MinGW 和 CodeBlocks 安装 Boost 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13320264/

相关文章:

c++ - connect() 后 boost 异常

c++ - 为什么 boost::mutex 比 std::mutex 快于 vs2013?

c++ - 将 double 分类到任意 bin 中

C++吞咽错误

c++ - 寻找凸缺陷?在 OpenCV 2.3 中,c++ 与 MS Visual Studio 2010

使用 Visual Basic 函数在 Excel 中的正则表达式匹配和替换范围

regex - 如何使用R从一行中提取多个字符串

java - 创建一个示例,如果 UNICODE_CASE 关闭则失败,但打开时匹配

c++ - 别名可变参数模板函数

c++ - 将 vector<int> 分配给 vector<double> 安全吗?