zoukankan      html  css  js  c++  java
  • Boost学习总结(一)VS2010环境下编译STLport和Boost

    Boost学习总结(一)VS2010环境下编译STLport和Boost

    Boost简介

    Boost库是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库。1998年,Beman G.Dawes(C++标准委员会成员之一)发起倡议并建立了Boost社区,目的是向C++程序员提供免费的、同行审查、可移植的高质量C++源程序库。Boost涵盖了字符串与文本处理、容器、迭代器、算法、图像处理、模板元编程、并发编程等等,使用Boost,将大大增强了C++的功能和表现力。

    STLport是什么?

    STLport是一个完全符合C++98标准的一个免费的C++标准库实现。STLport具有很多其他STL实现所没有的优点。首先是高度的可移植性,可以配合市面上几乎所有的操作系统和编译器使用,使开发的程序能够在不同的编译平台上获得一致的标准库实现。其次是性能表现优秀。第三个优点是在标准之外增加了若干有用的扩展,如rope(增强的字符串类)、slist(单链表数据结构)、hash_map(散列映射容器)以及支持线程安全。

    接下来,我们就将STLport和Boost安装并学习使用这两个库。

    安装VS2010

    首先第一步,我们下载安装visual studio 2010。下载戳这里:visual studio 2010

    安装步骤如下:

    首先解压压缩包,需要几分钟的时间,然后双击setup.exe.

    最后的安装得需要三十分钟左右,安装完成之后还会弹出一两个窗口,就不需要管了,直接各种取消之。

    编译STLport

    下载STLport地址在这里:http://sourceforge.net/projects/stlport/

    我选择的是STLport-5.2.1版本,下载的是压缩包STLport-5.2.1.tar.bz2。和Boost一样,我们需要对其解压、编译之后才能使用这个库。

    在【开始】菜单里打开vistual studio 2010下子文件vistual studio tools文件里的vistual studio命令提示(2010)。

    第一步:执行E:C++STLport-5.2.1(这里我是以我的安装路径为准),进入了STLport目录;

    第二步:configure msvc9(虽然我们安装的10版本,好像msvc10不行),配置编译环境;

    第三步:执行cd buildlib;

    第四步:执行命令nmake -f msvc.mak clearn install。

    等待数分钟之后就可以了,这里因为我之前安装的时候忘记截图了,所以就没有办法给出图片显示,如果编译不成功的话,可以按照下面的方法改之。(这是我在网上找到的解决方法)

    目前为止,应该把STLport编译成功了吧,呆会儿等编译Boost完成之后,一起来对这两个库进行测试。

    编译Boost

    下载Boost的官方网址:www.boost.org。但是打开速度太慢了,索性就在网上找到了压缩包boost_1_56_0.7z,然后解压就可以了。

    双击之后,我们会得到四个文件,其中有两个文件就是上图中所看到的b2.exebjam.exe

    注意:接下来的编译需要一个小时左右的时间,这是一个很蛋疼的事情。

    然后打开VS的命令提示窗口,运行bjam stage --without-python --toolset=msvc-10.0 --build-type=complete --stagedir="E:C++oost_1_56_0invc10"  link=static runtime-link=shared threading=multi debug release

    stage:表示只生成库(dll和lib),用install的话还会生成包含头文件的include目录。

    toolset:指定编译器,VS2010用msvc-10.0。

    without/with:表示不编译/编译哪些库。

    stagedir:当使用stage时用stagedir,使用install用prefix,表示编译生成文件的路径。路径的命名最好和编译器相关,编译管理。

    link:指定生成动态链接库或静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用static方式。

    runtime-link:动态/静态链接C/C++运行时库。有shared和static两种方式,这样runtime-link和link一共可以产生4种组合方式。

    threading:单/多线程编译。

    debug/release:编译debug/release版本。一般都是程序的debug版本对应库的debug版本,所以两个都编译。

    在VS2010中测试STLport和Boost

    我们运用VS10新建一个工程之后,右击工程名,选择属性,在VC目录里我们把Boost和STLport加入到这个工程里面去。

    包含目录:E:C++oost_1_56_0;$(IncludePath);E:C++STLport-5.2.1stlport;$(IncludePath)

    库目录:E:C++oost_1_56_0invc10lib;$(LibraryPath);E:C++STLport-5.2.1lib;$(LibraryPath);

    这个根据自己的路径改一下就可以了,紧接着编写代码测试。

     1 #include<iostream>
     2 #include<boost/thread.hpp>
     3 using namespace std;
     4 
     5 void threadFunc() {
     6     cout<<"This is a Thread function."<<endl;
     7 }
     8 
     9 int main() {
    10     boost::function<void()> func(threadFunc);
    11     boost::thread t(func);
    12     t.join();
    13     return 0;
    14 }

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstdlib>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<algorithm>
     7 #include<rope>
     8 #define inf 0x7fffffff
     9 using namespace std;
    10 
    11 int main() {  
    12     // crope是用来存储char字符的容器   
    13     crope crope1("Hello,");
    14     crope crope2("STLport!");
    15     cout<<crope1+crope2<<endl;
    16     cout<<"BaiYiShaoNian"<<endl;
    17     return 0;
    18 }  

  • 相关阅读:
    ansible笔记(11):初识ansible playbook(二)
    Linux下查看占用CPU与内存最高的进程
    ansible笔记(10):初识ansible playbook
    AbpZero Http 模式下 Chrome浏览器因Cookie 不能登录
    Tomcat 8443&8080 并存
    接入腾讯cos文件存储
    安卓包打渠道标签
    java Android与PHP encode的区别
    thinkphp常用
    phalcon task任务
  • 原文地址:https://www.cnblogs.com/BaiYiShaoNian/p/4619448.html
Copyright © 2011-2022 走看看