zoukankan      html  css  js  c++  java
  • Boost 1_37_0 的安装以及在VC6.0中的使用

    Boost 1_37_0 的安装和VC6.0s

    早就听说过这个Boost库的牛B,只是一直没有精力来学习,最近在网上查了查,评论有好有坏,但多一点是好的,不过暂时没有见过有公司使用Boost库来作为公司产品开发的,网上也有说Boost库值得用来学习和研究,但是在做应用方面,考虑到维护什么的,不太适合。的确也是,作为公司产品开发的技术,有时候要考虑到很多东西,不过说功能强就一下子拿来用,以后,技术人员的变动,升级什么的,如果给公司带来更多的麻烦,倒还不如使用人人都懂的MFC,只要能把应用做到位,多余的强功能,不用也罢。。。

    好了,开始学习。。。

    一、下载和安装。

    1.到官网下载个最新的包,我下载的是boost_1_37_0.rar

    2.新建一个目录,如:在:d:\Boost,把boost_1_37_0.rar解压到里面,如d:\Boost\boost_1_37_0

    3.网上的资料说,解压后,绝大多数的类库就可以使用了,因为里面已经有.h和.cpp的完整源码,所以直接包含在你的工程也是可编译过去的。使用方式:我的机子装了VC 6.0和VS.net 2008,我使用VC 6.0测试了一下,Pass.

    方法:在VC->Tools->Options->Directories->Include files里面增加D:\Boost\boost_1_37_0就OK了。

    给个例子如下:

    #include <vector>
    #include <iostream>
    #include <boost/lexical_cast.hpp>

    using namespace boost ;
    using namespace std ;

    int main(int argc, char * argv[])
    {
    vector<int> v1;
    vector<int>::const_iterator ci_v1 ;
    int iLength = 0 ;

    while( iLength < 10 )
    {
        try
        {
          if ( iLength == 5 )
            v1.push_back(lexical_cast<int>("DukeJoe")) ;
          else
            v1.push_back(lexical_cast<int>(iLength));
          }
          catch(bad_lexical_cast &ex)
          {
            cout << ex.what()<< endl ;
            v1.push_back(-1);
          }
          iLength++ ;
        }

        cout << "vector --> " ;
        for ( ci_v1 = v1.begin() ; ci_v1 != v1.end() ; ci_v1++ )
        {
          cout << *ci_v1 << " " ;
        }
        cout << endl ;

        return 0 ;
    }

    这时候VC 6.0就可以编译过去,可以使用Boost一些类库功能了。。。

    4.上面的使用方式是,等你的工程需要的时候,才将Boost一些库功能进行编译。但是我们现在也可以先将Boost类的功能编译成.dll和.lib,这样的话,等到我们的工程使用的时候,只需要.dll,.lib,还有相应的.h就可以了,这样我们工程的编译时间也少一点。

    一般Boost库是由多个子库功能组合起来的,我可以一下子全部编译所有的子库,也可只编译某一些子库,如regex功能子库。什么是子库?D:\Boost\boost_1_37_0\libs下面有多个文件夹,一个文件夹就是一个子库。

    现在我们先介绍怎么编译某个子库:以regex为例

    我的机子上面装了VC.net 2008和VC 6.0,因为C++的东西,很多公司还是使用VC 6.0来开发,很少使用VC.net版本,所以决定使用VC 6.0来编译Boost库,然后也在VC 6.0里面使用Boost库,而不使用.net版本的东西,但是到了.net 版本的VC.net也是可以使用Boost库的,其安装和使用过程类似,下面有提示一下的。

    方法一

    打开cmd,定位到D:\Boost\boost_1_37_0\libs\regex\build,先打上"D:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT",命令也使用双引号括上,这个VCVARS32.BAT,东东厉害了,VC 6.0不像它的哥们VC.net安装完后,会在环境变量上面加上必要的东西,这个VCVARS32.BAT就是一个加上必要的环境变量的批处理,如果你的VC 6.0安装在C盘,就改D为C,跟着,打上命令"nmake /f vc6.mak",就开始编译了,这里的nmake调用的是VC 6.0的,不是VC.net的nmake,vc6.mak是make文件,如果你想使用VC.net版本来编译,如我使用的是VC.net 2008,所以使用vc9.mak,但是你得使用"Visual Studio 2008 命令提示"的cmd,而不是一般的cmd,进去之后,编译命令改为"nmake /f vc9.mak",就OK了,对于VC.net版本,它也有一个VCVARS32.BAT,大概路径为D:\Program Files\Microsoft Visual Studio 9.0\VC\bin\VCVARS32.BAT,也是一个配置环境变量的批处理,在运行编译命令前,也可以使用绝对路径导一下VCVARS32.BAT。

    跟着下来的就是等待编译完成了。呵呵。

    编译完成后,D:\Boost\boost_1_37_0\libs\regex\build\vc6里面的.dll和.lib就是我们所需要的东东了,

    (设置为 D:\Boost\boost_1_37_0\libs\regex\build\vc6 )

    include files在D:\Boost\boost_1_37_0\boost\regex文件夹里。

    cy163注:若在c程序中 以 #include <boost/regex.hpp>形式包含regex.hpp,那么

     参数 VC->Tools->Options->Directories->Include files 就应设置为目录 D:\Boost\boost_1_37_0,否则会出现错误,因为</boost/regex.hpp>已经包含 boost部分。

    方法二:

    这个方法是使用bjam来编译,什么是bjam?bjam是一个对Boost库进行编译的批处理命令行工具,在那里可以得到它?也是在Boost库里面,但是是以源代码形式提供的,所以我们得首先把bjam编译出来,方法如下:

    1>定位到D:\Boost\boost_1_37_0\tools\jam\src,使用记事本打开build.bat(先备份一下),里面有部分内容如下:

    //-------------------------------------------------------------------------------------------

    :Guess_Toolset
    REM Try and guess the toolset to bootstrap the build with...
    REM Sets BOOST_JAM_TOOLSET to the first found toolset.
    REM May also set BOOST_JAM_TOOLSET_ROOT to the
    REM location of the found toolset.

    if "_%ProgramFiles%_" == "__" set ProgramFiles=C:\Program Files

    //-------------------------------------------------------------------------------------------

    如果你的VC安装在D盘,则要改一下红色部分配置。

    打开cmd定位到D:\Boost\boost_1_37_0\tools\jam\src,打上build.bat直接运行,开始编译,完成后,在D:\Boost\boost_1_37_0\tools\jam\src\bin.ntx86下面有一个bjam.exe,这个就是我们想要的bjam了。

    上面得到bjam后,把它拷贝到D:\Boost\boost_1_37_0目录下,然后我们现在可以使用bjam来编译我们的regex子库了,打开cmd定位到D:\Boost\boost_1_37_0,打上命令"bjam --toolset=msvc-6.0 --build-type=complete --prefix=d:\boost install --with-regex",就可以开始编译了。

    编译完成后,D:\Boost下面的include和lib文件夹的东西,就是我们工程需要的东东了。

    5.好,现在我们介绍怎么编译整个Boost库,就是说一下把Boost库里面所有的子库全部编译完后,其实很简单,跟上面编译单个子库差水多的命令行,方法如下:

    把bjam拷贝到D:\Boost\boost_1_37_0目录下,打开cmd定位到D:\Boost\boost_1_37_0,打上命令"bjam --toolset=msvc-6.0 --build-type=complete --prefix=d:\boost install",就可以开始编译了。上面命令中的--build-type=complete 好像跟以前的版本不一样,以前的好像是使用-sBuild="Debug Release"类似的参数,只有使用这--build-type=complete 才能编译出Debug 和Release版本的库,使用-sBuild不行。

    等待吧,挺久的,听说是2个小时。

    编译完后,D:\Boost下面的include和lib文件夹的东西,就是我们工程需要的东东了。

    6.现在,Boost库全部子库假设已经编译好了,得到D:\Boost\include和D:\Boost\lib,有两个东东就可以在我们的工程里面使用Boost库的功能了。

    我们现在使用VC 6.0开发,得先把VC 6.0配置一下,如下:

    1.在VC->Tools->Options->Directories->Include files 加上D:\Boost\include\boost-1_37\boost

    2.在VC->Tools->Options->Directories->Library files 加上D:\Boost\lib

    把上面先前设置过的,

    在VC->Tools->Options->Directories->Include files里面增加D:\Boost\boost_1_37_0

    删掉。

    然后打开上面先前编译通过的工程,rebuild一下,是不是也可以编译过去现在?

    好了,现在可以使用VC 6.0来使用Boost库作开发了。。。

  • 相关阅读:
    图像检索(image retrieval)- 11
    图像检索(image retrieval)- 10相关
    Mock.js简易教程,脱离后端独立开发,实现增删改查功能
    Azure Monitor (3) 对虚拟机磁盘设置自定义监控
    Azure Monitor (1) 概述
    Azure SQL Managed Instance (2) 备份SQL MI
    Azure Virtual Network (17) Private Link演示
    Azure Virtual Network (16) Private Link
    Azure Virtual Network (15) Service Endpoint演示
    Azure Virtual Network (14) Service Endpoint服务终结点
  • 原文地址:https://www.cnblogs.com/cy163/p/1698156.html
Copyright © 2011-2022 走看看