【简介】
Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。Boost库由C++标准委员会库工作组成
员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。Boost由于其对跨平台的强调
,对标准C++的强调,与编写平台无关。大部分boost库功能的使用只需包括相应头文件即可,少数(如正则表达式库,文件系统库等)需
要链接库。但Boost中也有很多是实验性质的东西,在实际的开发中实用需要谨慎。
【安装】
boost编译步骤
1)编译bjam工具
到boost安装路径目录下,
windows:运行bootstrap.bat,编译bjam
linux:运行./build.sh
2)配置相关文件(可选)
bjam编译工具无法找到编译器,需要设置boost-build相关文件:
VC编译器,可以进行如下设置:
using msvc : 7.1 : "C:/Program Files/Microsoft Visual Studio .NET2003/Vc7/bin/cl" ;
针对gcc编译器,可以进行如下设置:
using gcc : 4.3 : d:\\dev\\gcc\\bin\\gcc.exe ;
如bjam可以找到编译器,需指定编译器,设置如下:
3)编译boost库
在boost目录下,运行bjam 即可编译全部的boost库,这个过程需要的时间比较长,一般建议只编译自己需要的库文件,通过bjam--show
-libraries 即可查看
找到需要编译的boost库名,按照需要编译所需的boost库:
例如编译serialization序列化库,
windows上编译静态多线程debug版本库:
bjam --toolset=msvc link=static runtime-link=static threading=multistage debug --with-serialization
编译生成文件统一在boost目录下stage\libs中
Linux上编译并安装:
./bjam --includedir=/usr/local/include --libdir=/usr/local/lib--with-serialization install
./bjam --toolset=gcc --includedir=/usr/local/include--libdir=/usr/local/lib --with-regex install
【使用】
1. 仅使用boost提供的头文件 lex.cpp:
-----------------------lex.cpp开始--------------------------------
#include<boost/lexical_cast.hpp>
#include <iostream>
using boost::lexical_cast;
intmain(){
}
-----------------------lex.cpp结束--------------------------------
g++ lex.cpp -I/usr/local/include -o lex
2. 使用regex库
-----------------------rex.cpp开始--------------------------------
#include <iostream>
#include <string>
#include <boost/regex.hpp>
int main(){
}
-----------------------rex.cpp结束--------------------------------
g++ rex.cpp -I/usr/local/include -lboost_regex -o re
3. 使用boost_serialization序列化库
-----------------------ser.cpp开始--------------------------------
#include <sstream>
#include <iostream>
#include <string>
#include<boost/archive/text_oarchive.hpp>
#include<boost/archive/text_iarchive.hpp>
#include<boost/archive/binary_iarchive.hpp>
#include<boost/archive/binary_oarchive.hpp>
#include<boost/serialization/utility.hpp>
using namespace std;
class Data
{
public:
};
class person
{
public:
private:
};
std::stringstream ss;
void save()
{
}
void load()
{
//
}
int main()
{
}
-----------------------ser.cpp结束--------------------------------
g++ ser.cpp -I/usr/local/include -lboost_serialization -oser
<!运行注意点!>
1)Windows的Visual Studio 环境需要设置开启RTTI功能
工程属性->C/C++选项卡->语言->启用运行时类型信息选择"是(/GR)"
2)linux动态链接库路径需要配置
#vim /etc/ld.so.conf
加入 /usr/local/lib
#ldconfig
【参考资料】
【参考资料】
boost自带文档 Boost Getting Started,或者网站
http://boost.org/doc/libs/1_46_1/more/getting_started/windows.html
http://boost.org/doc/libs/1_46_1/more/getting_started/unix-variants.html
中文化文档
http://code.google.com/p/boost-doc-zh/downloads/list
boost 编译
http://blog.csdn.net/killiori/archive/2010/05/16/5598333.aspx
http://www.cppblog.com/tx7do/archive/2007/08/21/30504.html
BJAM编译工具的使用(一)——如何编译Boost
http://www.cppblog.com/gau2008/articles/109910.html
Boost 库命名规则(翻译)
http://blog.csdn.net/WuErPing/archive/2009/05/11/4167843.aspx
Boost C++ 库 第 11 章 序列化
http://zh.highscore.de/cpp/boost/serialization.html
试用boost.serialize序列化对象
http://www.cppblog.com/liquidx/archive/2009/06/18/88007.html
boost之序列化
http://blogold.chinaunix.net/u1/44543/showart_1351170.html
datastream, C++数据序列化与反序列化容器
http://www.cppblog.com/xmli/archive/2008/10/15/64030.html
序列化——Boost Serialization库
http://blog.sina.com.cn/s/blog_6fb5b7b80100m6on.html
C++ Boost 之Lexical_cast
http://blog.csdn.net/universee/archive/2006/01/12/577131.aspx
--------------------------------------------------------------------------------
本文原创,转载请注明出处 http://blog.sina.com.cn/faithfish