1.模块/工具简介
Boost库是一个跨平台,开源并且完全免费的C++库,内容涵盖字符串处理、正则表达式、容器与数据结构、并发编程、函数式编程、泛型编程、设计模式实现等许多领域,使得实际的开发更加灵活和高效。
第一步(打开官网:http://www.boost.org/):
第二步(选择符合自己系统版本的库):
第三步(解压目录并执行该目录下的bootstrap.bat和b2):
打开解压后的文件夹,运行文件夹下的bootstrap.bat,会生成一个.exe文件,可能是bjam.exe或b2.exe。
运行生成的bjam.exe或者b2.exe,会生成相应的文件。
**注意:**执行第一个后执行第二个,第二个会需要很长时间需要耐心等待,遇到一直卡住就敲回车即可!!!
2.系统要求
Windows xp以上
3.部署步骤
(1)选择下载Boost库Windows版的安装包,解压至硬盘任意目录,下面用BOOSTDIR表示boost的存放目录
(2)在解压的文件夹中找到bootstrap.bat并运行,生成bjam的可执行程序,运行即可
(3)编译完成后会生成bin.v2和stage子目录,里面包含了生成的*.lib库文件
(4)配置vs环境,创建测试项目test,工具栏项目->右键->test属性->配置属性->C/C+±>常规->附加包含目录中添加BOOSTDIR路径(C:\boost_1_54_0;),在链接器->常规->附加库目录中添加BOOSTDIR\stage\libs(C:\boost_1_54_0\stage\lib*.lib),应用并确定,boost库在win32环境下就部署成功了!
注:建议硬盘根目录和C盘固态会快一些,我自己是放在D盘的。
//官网实例代码
#include <boost/regex.hpp>
#include <iostream>
#include <string>
int main()
{
std::string line;
boost::regex pat("^Subject: (Re: |Aw: )*(.*)");
while (std::cin)
{
std::getline(std::cin, line);
boost::smatch matches;
if (boost::regex_match(line, matches, pat))
std::cout << matches[2] << std::endl;
}
}
4.可能遇到的问题
(1)LINK : fatal error LNK1104: cannot open file ‘libboost_thread-vc100-mt-s-1_52.lib’
到库文件去看,只存在libboost_thread-vc100-mt-1_52.lib,两者有什么差别呢
-s
ABI tag: encodes details that affect the library’s interoperability with other compiled code. For each such feature, a single letter is added to the tag:
原来,-s 代表 “runtime-link-static",我的工程是用这种方式使用boost库的,因此需要’libboost_thread-vc100-mt-s-1_52.lib’
解决方案:
重新编译boost库,用下面的编译命令:
b2 --build-dir=c:\boost-build --build-type=complete msvc stage link=static
(2)Already defined in libcmt.lib
附:VS2017 静态链接 Boost 函数库的配置方法:
打开项目属性->配置属性->C/C+±>代码生成,选择“运行库”为“多线程 (/MT)”(如选择“多线程 DLL (/MD)”,则为动态链接 Boost 库)。