您的位置:首页 > 其它

VS2008+Boost+1_47_0+STLPort-5.2.1安装及使用配置

2017-09-01 12:53 453 查看
一.编译安装STLPort

1、从STLPort官网http://www.stlport.org/下载STLport-5.2.1.tar.bz2,使用WinRar或其他工具将其解压到硬盘任何位置,本人解压到了C:\STLport,当然您也可以解压到其他路径中。补充说明下,截止本文发布时间,STLport最新稳定版为5.2.1。

2、进入Visual Studio 2008命令行,执行命令cd C:/STLport/STLport5.2.1进入STLPort的根目录

3、执行命令configue msvc9配置编译环境。

6、执行命令cd C:/STLport/STLport5.2.1/lib。

7、执行命令nmake –f msvc.mak clean install,执行STLport的编译过程

编译完成后在STLPort主目录C:/STLport/STLport5.2.1下面比之前多出了lib和bin两个文件夹,所有编译产生的*.dll和*.lib文件都已经自动复制到了这两个文件夹下面,同时C:/STLport/STLport5.2.1/build/lib目录下产生的obj文件夹则可以删除,以免中间文件占用硬盘空间(多达315M左右)。

二.编译安装Boost1.470

1、从boost官网http://www.boost.org/下载boost_1_47_0.7z,并解压到本地硬盘,本人解压到了C盘中,解压后的boost目录为C:/boost_1_47_0

2、进入Visual Studio 2008命令行,执行命令cd C:/boost_1_47_0进入boost的根目录,执行命令bootstrap.bat运行批处理文件,生成了编译boost库的工具bjam.exe

3、修改Boost配置文件

  进入文件夹C:/boost_1_47_0/tools/build/v2用记事本打开文件user-config.jam。

  找到文件中的MSVC configuration处, 将# using msvc : 8.0 ;修改为using msvc : 9.0 ; 记得去掉代表注释的#号,

 找到文件中的STLPort configuration处,将# using stlport : : /usr/include/stlport /usr/lib ;修改为
using stlport : 5.2.1 : C:/STLport/STLport-5.2.1/stlport : C:/STLport/STLport-5.2.1/lib ;

4、Visual Studio 2008命令行在C:/boost_1_47_0中执行对boost库完全编译的命令bjam –-toolset=msvc –-build-type=complete stdlib=stlport stage,当然您也可以根据您自己的需求更改bjam工具的编译参数。

接下来是对boost编译过程漫长的等待,本人的电脑完全编译boost耗时40分钟左右。编译完成后,得到的boost库文件都默认编译到文件夹C:/boost_1_47_0/stage/lib中.另外boost的头文件所在文件夹就是C:\boost_1_47_0\boost.

三、  使用Boost之前对VS2008环境的配置

1、配置vs2008的目录选项:VS2008->工具->选项,进入“项目和解决方案”的“VC++目录”页,在“显示以下内容的目录”下面选择“包含文件”,在其中加入C:/STLport/STLport5.2.1和C:\boost_1_47_0,并调整到最前面。选择“库文件”,在其中加入C:/STLport/STLport5.2.1/lib和C:/boost_1_47_0/stage/lib。

2、针对具体工程时,要设置必要的工程属性

    若在Debug模式下使用,应在当前工程的属性中进入“C/C++”的“预处理器”页的“预处理器定义”中添加宏_STLP_DEBUG和__STL_DEBUG两个宏。_STLP_DEBUG为Debug模式下使用STLport需要定义的宏,__STL_DEBUG(注意开始的下划线为双下划线)为Debug模式下与boost配合使用STLport需要定义的宏.

    另,与MFC配合使用STLport需要定义宏_STLP_USE_MFC;如果程序要使用静态库的话定义宏(默认已经定义此宏):_STLP_USE_STATIC_LIB,并且将工程运行库属性改为/MT或/MTD。 

四、给出一小段测试代码
注意头文件的包含顺序

[cpp] view
plain copy

 print?

<span style="font-family:SimSun;">//#define _STLP_USE_STATIC_LIB  //静态编译的宏  

#include <iostream>    

#include <vector>  

#include <boost/timer.hpp>  

  

using namespace std;   

using namespace boost;    

  

int main()    

{       

    std::vector<int> vt;  //STLport的vector!  

    timer t;    //构造一个计时器对象        

    cout<<"max timespan:"<<t.elapsed_max()/3600<<"h"<<endl; //定时器最大计时        

    cout<<"min timespan:"<<t.elapsed_min()<<"s"<<endl;      //定时器最小计时(分辨率)          

    cout<<"now time elapsed:"<<t.elapsed()<<"s"<<endl;      //从计时器对象构建至今过了多长时间       

    system( "pause" );  

    return 0;   

} </span>  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: