Boost的使用相关

Boost的部分编译

下载的是boost 1.5版本

首先用vs2010命令提示工具定位到boost1.5目录

./bootstrap.bat 

执行脚本生成bjam.exe

再用命令提示符工具输入:bjam --toolset=msvc-10.0 --with-date_time stage

将在bootstrap.bat 的同目录下的stage/lib 下生成date_time的各种lib

命令参考:

 
--build-dir=<builddir> 编译的临时文件会放在builddir里(这样比较好管理,编译完就可以把它删除了)
--stagedir=<stagedir> 存放编译后库文件的路径,默认是stage
--build-type=complete 编译所有版本,不然只会编译一小部分版本(确切地说是相当于:variant=release, threading=multi;link=shared|static;runtime-link=shared)
variant=debug|release 决定编译什么版本(Debug or Release?)
link=static|shared 决定使用静态库还是动态库。
threading=single|multi 决定使用单线程还是多线程库。
runtime-link=static|shared 决定是静态还是动态链接C/C++标准库。
--with-<library> 只编译指定的库,如输入--with-regex就只编译regex库了。
--show-libraries 显示需要编译的库名称

 

生成的lib名称的含义:

libboost_regex-vc100-sgdp-1_46_1.lib。

前面是库名称,vc100表示编译器,最后面是版本号。下面来解释一下中间那些字符的含义:

版本号中标记的含义

表示的含义

s

静态库版本

gd

调试版本

p

使用STLport作为STL实现的版本,

   

 

 关于使用stlport编译:http://hi.baidu.com/seuwind7/blog/item/79782fc8f0b1f3e953664f40.html

打开E:\boost_1_5\tools\build\v2下的user-config.jam

第74行去掉注释修改为:    using stlport : 5.2.1 :  E:/STLport_5_2_1/stlport :  E:/STLport_5_2_1/lib ;

(注意看文件开头的说明:冒号和封号的左右两边必须要有空格,Windows下的路径要使用/或者\\)

为使修改的配置配置生效,重新运行bootstrap.bat编译出bjam.exe

 

编译thread库与使用

我使用的命令是:

   bjam  stdlib=stlport  --toolset=msvc-10.0  --with-thread --stagedir=MYLIB --build-type=complete

还需要编译thread库依赖的date_time库:

 bjam  stdlib=stlport  --toolset=msvc-10.0  --with-date_time--stagedir=MYLIB --build-type=complete

STLport在Debug模式使用时,要定义__STL_DEBUG

STLport与Boost一起在Debug模式下使用时,要在编译器定义预处理器: _STLP_DEBUG

STLport与MFC一起使用的时候,要定义_STLP_USE_MFC

 参考:http://dearymz.blog.163.com/blog/static/20565742009221452985/

 直接下载编译好的BOOST

 http://www.boostpro.com/

 64-bit的下载对应的64位的boost库,32-bit的对应32位的

在visual studo 配置管理器中要选择对应的 win32 或者是 x64

使用错的话程序编译是会无法解析BOOST的lib的 

取消BOOST的自动链接功能

BOOST默认是采用静态链接的,只需要在项目中指定库的头文件目录,BOOST就会自动链接需要的库

但是在设计一个类库的时候,如果在类库的实现中使用了BOOST,BOOST默认是不会链接到类库中的,当应用使用该类库的时候依然会提示缺少BOOST的lib

这时应该在类库中取消BOOST的自动链接功能,再手动添加需要的lib

取消方法是预定义这个宏:

 BOOST_ALL_NO_LIB

原文地址:https://www.cnblogs.com/lihuixian001/p/2612568.html