[boost]VS2015编译构建boost 1.60 博客分类: C/C++ boost
编译脚本
在boost_1_60_0.zip解压后的根目录下,新建一个build_boost_1_60_vs2015.bat文件,打来命令行并定位到当前目录下执行该bat文件(不要双击运行!),等待运行完毕即可。
bat文件内容如下:
参考自:https://studiofreya.com/2015/12/19/how-to-build-boost-1-60-with-visual-studio-2015/
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86 cd boost_1_60_0 call bootstrap.bat rem Most libraries can be static libs b2 -j8 toolset=msvc-14.0 address-model=64 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=stage/x64 b2 -j8 toolset=msvc-14.0 address-model=32 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=stage/win32 pause
编译完成后的lib位置
以boost::atomic的release版本为例,其编译生成的目录位置是
x64:boost_1_60_0\bin.v2\libs\atomic\build\msvc-14.0\release\address-model-64\link-static\threading-multi\libboost_atomic-vc140-mt-1_60.lib
win32:boost_1_60_0\bin.v2\libs\atomic\build\msvc-14.0\release\link-static\threading-multi\libboost_atomic-vc140-mt-1_60.lib
默认编译引发的错误
如果用到了boost::system,那么在x64模式下会出现lnk2001的错误:
ErrorLNK2001unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAAEBVerror_category@12@XZ)
解决办法:按照上面的配置编译生成x64的库。
编译参数解释
编译参数到底什么含义,以及可选的其他参数值,见官方文档说明:
http://www.boost.org/doc/libs/1_60_0/doc/html/bbv2/reference.html