参考消息电子版官网,优化教程网,2023年最建议买的手机,微信小程序开发平台游戏2.解压缩到D:\boost 目录下3.编译bjam(1)从vs2010的工具菜单进入命令提示窗口(单击“开始”按钮#xff0c;指向“所有程序”#xff0c;指向“Microsoft Visual Studio 2010”#xff0c;指向“Visual Studio tools(工具)”#xff0c;然后单击“Visual Studio 2010 comma…2.解压缩到D:\boost 目录下3.编译bjam(1)从vs2010的工具菜单进入命令提示窗口(单击“开始”按钮指向“所有程序”指向“Microsoft Visual Studio 2010”指向“Visual Studio tools(工具)”然后单击“Visual Studio 2010 command prompt(命令提示)”(2)cd到D:\boost\boost_1_46_0下执行bootstrap.bat然后会在D:\boost\boost_1_46_0\下生成bjam.exe4.设定编译环境(如果想去掉编译警告需要修改)修改user-config.jam (D:\boost\boost_1_46_0\tools\build\v2\user-config.jam) 的MSVC configuration# MSVC configuration# Configure msvc (default version, searched for in standard locations and PATH).# using msvc ;using msvc : 10.0 : : /wd4819 /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL0 ;5.將目录cd到D:\boost\boost_1_46_0\下执行(1) 编译boost库bjam stage --without-Python --toolsetmsvc-10.0 --build-typecomplete --stagedirD:\boost\boost_1_46_0\bin\vc10 (这一步需要等待很长时间大概一个小时左右……)下面详细解释一下每个参数的含义stage/installstage表示只生成库(dll和lib)install还会生成包含头文件的include目录。toolset指定编译器可选的如borland、gcc、msvc(VC6)、msvc-10.0(VS20010)等。without/with选择不编译/编译哪些库。stagedir/prefixstage时使用stagedirinstall时使用prefix表示编译生成文件的路径。推荐给不同的IDE指定不同的目录如VS2010对应的是D:\boost\boost_1_46_0\bin\vc10否则都生成到一个目录下面难以管理。build-dir编译生成的中间文件的路径。这个本人这里没用到默认就在根目录(D:\boost\boost_1_46_0)下目录名为bin.v2(删掉)等编译完成后可将这个目录全部删除(没用了)所以不需要去设置。link生成动态链接库/静态链接库。生成动态链接库需使用shared方式生成静态链接库需使用static方式。一般boost库可能都是以static方式编译因为最终发布程序带着boost的dll感觉会比较累赘。runtime-link动态/静态链接C/C运行时库。同样有shared和static两种方式这样runtime-link和link一共可以产生4种组合方式各人可以根据自己的需要选择编译。一般link只选static的话只需要编译2种组合即可即linkstatic runtime-linkshared和linkstatic runtime-linkstatic。threading单/多线程编译。一般都写多线程程序当然要指定multi方式了如果需要编写单线程程序那么还需要编译单线程库可以使用single方式。debug/release编译debug/release版本。一般都是程序的debug版本对应库的debug版本所以两个都编译。运行完后(弹出输入提示符)6.设定vs2010环境。(注在2010环境下这步在项目--右键属性--VC Directories 中去填写对应路径 )修改环境变量$(BOOST): D:\boost\boost_1_46_0Tools - Options - Projects and Solutions - VC Directories在Library files加上$(BOOST)\bin\vc10\lib在Include files加上$(BOOST)使用举例#include此时不用包含库文件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里的代码很容易可以读懂并且值得我们学习。