在网上下载Boost_1_46_1版本 安装编译步骤如下:
1. 将下载好的boost文件解压到本地磁盘C:/boost_1_46_1文件夹下。
2. 打开vs2008依次进入菜单栏的tools->visual studio 2008 Command Prompt,cd 到目录C:/boost_1_46_1/tools/build/v2下,输入bootstrap.bat命令点回车后生成bjam.exe文件。将此文件拷贝至C:/boost_1_46_1下。
3. 将VS2008的Command Prompt的执行目录cd至C:/boost_1_46_1,
输入命令:bjam --toolset=msvc-9.0 --build-type=complete stage 后开始编译(此过程需要几十分钟的时间)。
4.编译完成后生成的库文件位于C:/boost_1_46_1/stage/lib下。
5.在VS2008中,设置include路径和lib路径.
(注:在2008环境下这步,在项目-->右键属性-->VC++ Directories 中去填写对应路径 )
Tools -> Options -> Projects and Solutions -> VC++ Directories
在Library files加上C:\boost\boost_1_46_1\lib
在Include files加上C:\boost\boost_1_46_1\include
关于BOOST库的基本知识:
boost库分类:
(1)不需要编译库:any、array、asio、conversion、crc、bind/mem_fn、enable_if、function、lambda、mpl、smart_ptr...
(2)需要编译的库:date_time、filesystem、function_types、graph、iostreams、math、mpi、program_options、python、regex、serialization、signals、system、test、thread、wave
使用举例:
#include<boost\thread.hpp>
此时,不用包含库文件,boost的auto-link机制将会自动帮我们包含对应的静态lib。也就是说,boost默认是以静态方式链接的,这样我们的工程属性最好也设为Multi-threaded (Debug)。如果想使用dll动态方式链接,需要预先定义宏:
#define BOOST_ALL_DYN_LINK
同样,此时boost也会默认帮我们包含对应的lib。如果不想使用boost提供的auto-link机制,或者对它的自动链接不太放心的话(其实大可不必担心),可以预先定义宏:
#define BOOST_ALL_NO_LIB
然后使用以下方法链接:
#pragma comment(lib, "boost_thread-vc100-mt-1_46.lib")或
#pragma comment(lib, "boost_thread-vc100-mt.lib")
这两个lib其实是一样的,实在不明白boost编译时为什么每个库都要复制一份,难道是因为后者在升级boost版本后不用改代码?另外还有一个比较有用的宏:
#define BOOST_LIB_DIAGNOSTIC
它可以让VC在编译时的output窗口中输出程序具体链接了哪些boost库以及链接顺序。
关于boost的auto-link机制,详细可以看看boost\config\auto_link.hpp里的代码,很容易可以读懂,并且值得我们学习。