Boost学习总结(一)VS2010环境下编译STLport和Boosthtml
Boost库是一个功能强大、构造精巧、跨平台、开源而且彻底免费的C++程序库。1998年,Beman G.Dawes(C++标准委员会成员之一)发起倡议并创建了Boost社区,目的是向C++程序员提供免费的、同行审查、可移植的高质量C++源程序库。Boost涵盖了字符串与文本处理、容器、迭代器、算法、图像处理、模板元编程、并发编程等等,使用Boost,将大大加强了C++的功能和表现力。python
STLport是一个彻底符合C++98标准的一个免费的C++标准库实现。STLport具备不少其余STL实现所没有的优势。首先是高度的可移植性,能够配合市面上几乎全部的操做系统和编译器使用,使开发的程序可以在不一样的编译平台上得到一致的标准库实现。其次是性能表现优秀。第三个优势是在标准以外增长了若干有用的扩展,如rope(加强的字符串类)、slist(单链表数据结构)、hash_map(散列映射容器)以及支持线程安全。ios
接下来,咱们就将STLport和Boost安装并学习使用这两个库。程序员
首先第一步,咱们下载安装visual studio 2010。下载戳这里:visual studio 2010算法
安装步骤以下:编程
首先解压压缩包,须要几分钟的时间,而后双击setup.exe.安全
最后的安装得须要三十分钟左右,安装完成以后还会弹出一两个窗口,就不须要管了,直接各类取消之。数据结构
下载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 build\lib;
第四步:执行命令nmake -f msvc.mak clearn install。
等待数分钟以后就能够了,这里由于我以前安装的时候忘记截图了,因此就没有办法给出图片显示,若是编译不成功的话,能够按照下面的方法改之。(这是我在网上找到的解决方法)
目前为止,应该把STLport编译成功了吧,呆会儿等编译Boost完成以后,一块儿来对这两个库进行测试。
下载Boost的官方网址:www.boost.org。可是打开速度太慢了,索性就在网上找到了压缩包boost_1_56_0.7z,而后解压就能够了。
双击以后,咱们会获得四个文件,其中有两个文件就是上图中所看到的b2.exe和bjam.exe。
注意:接下来的编译须要一个小时左右的时间,这是一个很蛋疼的事情。
而后打开VS的命令提示窗口,运行bjam stage --without-python --toolset=msvc-10.0 --build-type=complete --stagedir="E:\C++\boost_1_56_0\bin\vc10" 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版本,因此两个都编译。
咱们运用VS10新建一个工程以后,右击工程名,选择属性,在VC目录里咱们把Boost和STLport加入到这个工程里面去。
包含目录:E:\C++\boost_1_56_0;$(IncludePath);E:\C++\STLport-5.2.1\stlport;$(IncludePath)
库目录:E:\C++\boost_1_56_0\bin\vc10\lib;$(LibraryPath);E:\C++\STLport-5.2.1\lib;$(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 }