C++ 使用MinGW和代码块安装Boost库

C++ 使用MinGW和代码块安装Boost库,c++,regex,boost,mingw,C++,Regex,Boost,Mingw,我第一次尝试Boost库,我选择了一个叫Regex的漂亮女孩 我已经在我的机器上安装了库(自动生成?),但是我收到了上面的错误(找不到-lboost\u regex)。我将代码::块与MinGW一起使用,并使用C++0X编译器标志 我有 将“搜索目录”指向安装目录 向链接器添加了-lboost\u regex标志 但是没有运气。有人能帮我把它修好吗 更新 现在一切正常。在下面的回答中,我为这个问题的新手添加了一些进一步的注释 (另外,更改了问题的标题,因为它比我开始时的问题更广泛。)我不确

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

我已经在我的机器上安装了库(自动生成?),但是我收到了上面的错误(找不到
-lboost\u regex
)。我将代码::块与MinGW一起使用,并使用C++0X编译器标志

我有

  • 将“搜索目录”指向安装目录
  • 向链接器添加了
    -lboost\u regex
    标志
但是没有运气。有人能帮我把它修好吗


更新

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


(另外,更改了问题的标题,因为它比我开始时的问题更广泛。)

我不确定您所说的自动生成是什么意思。大多数Boost库都只是头库,但少数库(如regex)需要编译为共享/静态库。编译步骤不是自动的,您需要调用Boost构建系统(
bjam
)来完成此操作。当然,也有一些源代码(例如BoostPro)为各种平台分发预构建的Boost二进制文件


完成后,您需要将库所在的路径添加到链接器的搜索路径中。对于MinGW,此选项是
-L“path/to/library”
。Boost确实有允许自动链接所需库的指令,这在MSVC中似乎运行得很好,但我从未让它在MinGW中运行过。因此,还必须列出要显式链接的库。默认情况下,Boost库在文件名中包含目标和版本信息,因此典型的链接器命令行选项类似于MinGW gcc 4.7和Boost 1.51的
-lboost\u regex-mgw47-mt-1_51
,以下是一些链接和提示,可以帮助新手,从我的第一次构建经验来看。我直接从zip文件构建库。我建立在MinGW之上,并使用IDE的代码块

  • 下载boostzip,解压缩到某个地方(我会把那个地方称为
    $boostdir
    • 解压时相当大,>300MB
  • 将MinGW bin添加到路径变量
    • 当Boost构建时,它需要访问MinGW可执行文件
  • 构建
    b2.exe
    bjam.exe
    • Windows Blithly的功能可用
    • 如果是,您显然可以像文档所说的那样使用
      bootstrap.bat
    • 如果它不是(像我的一样),您必须在步骤4和5中自己构建exe文件
  • 在CMD中,导航到
    $boostdir/tools/build/v2/engine
  • 运行
    build.bat mingw
    (将生成
    b2.exe
    bjam.exe
  • 现在,您已经根据系统规范定制了
    b2
    bjam
    。导航回
    $boostdir
    并准备开始构建库。
    • Boost将在当前目录中创建一个新的
      bin.v2
      目录
    • 所有LIB都将进入
      bin.v2
    • 出于某种原因,这是一个“中间”目录
    • 此步骤中无需执行任何操作,只需一些额外信息:)
  • 运行
    b2工具集=gcc--build type=complete
    • 这需要很长时间,大约1-2小时
    • 你会知道它是否有效。如果你觉得有什么不对劲,那就没用了
    • 构建可以使用各种

  • 现在你们都长胖了。设置代码块的时间到了

  • 将编译器指向头文件
    • 右键单击项目->构建选项->搜索目录选项卡->编译器选项卡->添加
      $boostdir
      地址
  • Boost已根据当前系统规范为所需库构建了一个DLL。请查看
    $boostdir
    • 此DLL稍后将在链接器中使用,因此暂时不要关闭其资源管理器窗口
    • 我的在
      C:\Program Files\Boost_1_52\stage\lib\libboost_regex-mgw44-1_52.dll中
    • 我认为文档有一个聪明的方法可以做到这一点,但我还没有尝试过
    • 构建完成后,可以删除步骤#6中的“中间”目录
  • 将链接器指向该DLL的目录
    • 右键单击项目->构建选项->搜索目录选项卡->链接器选项卡->添加 那个目录地址(
      blah\blah\blah\stage\lib\
  • 将该DLL标志添加到链接器设置中
    • 我的是
      -lboost\u regex-mgw44-1\u 52
  • 深呼吸,向你的上帝祈祷,点燃一次考验
  • 可能有帮助或混淆的其他文档:

    Blocks网站上有一个我在搜索快结束时才找到的代码。这是相当有帮助的,但有一些奇怪的事情。也很有帮助


    祝你好运

    “自动生成哪个?”我想这是你的错误。您是如何安装这些库的?根据我的经验,您要么得到一个已经构建了库的boost包(比如nuwen MinGW发行版和BoostPro包,或者针对MSVC boost库的boost.teeks99.com),要么自己构建它们。我不熟悉“自动”构建它们的安装(尽管我很乐意了解这一点)。可能就是这样。我刚下载了安装程序并运行了它。我想我在什么地方读到过,它同时建造了所有的东西。不管怎样,我一直在尝试使用构建自己,但有一系列新的问题…我想我会把精力集中在那里。正如Praetorian所指出的,你必须在链接器的搜索路径中添加提升库的路径。顺便说一句,你在链接时会遇到这个错误吗?@SChepurin是的,但事实证明我还没有构建库。我只加了变量