前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Windows10中Visual Studio2017中使用boost1.69.0

在Windows10中Visual Studio2017中使用boost1.69.0

作者头像
ccf19881030
发布2020-03-10 16:19:11
4.2K0
发布2020-03-10 16:19:11
举报
文章被收录于专栏:ccf19881030的博客ccf19881030的博客

前言

Boost是一个功能强大、构造精巧、跨平台、开源而且完全免费的C++程序库,有着“C++ '准’标准库”的美誉。 Boost是由C++标准委员会部分成员所设立的Boost社区开发并维护,使用了许多现代C++编程技术,内容涵盖字符串处理、正则表达式、容器与数据结构、并发编程、函数式编程等。目前已经更新到了1.72.0版本,官网下载地址为:https://www.boost.org/users/history/version_1_72_0.html,由于我之前在自己Windows10系统上安装的是Boost 1.69.0,其源代码下载地址为:https://sourceforge.net/projects/boost/files/boost/1.69.0/,所以本文直接演示在VS2017下使用boost1.69.0版本,使用32位的debug模式进行测试,其他的64位和VS编译器同理。

一、从sourceforge上下载编译好的针对MSVC的boost1.69.0版本

由于从源代码直接编译Boost比较费时,所以sourceforge-boost1.69.0-msvc上有人提供了编译好的boost1.69.0的MSVC版本,如下图所示:

boost1111
boost1111

上图中是针对MSVC编译器即Visual VC++编译boost1.69.0的版本, 其中msvc是VC++编译器的名称,12.0代表是VS2013的版本,14.0是VS2015的版本,14.1是VS2017的版本,32和64表示是生成支持32位的还是64位的lib或dll库。

这样就不用我们自己编译Boost源代码,下载boost_1_69_0-msvc-14.1-64.exe这些文件加压缩到指定的目录后,包含对应的头文件和库文件,就可以直接在Visual Studio2017中使用了。 由于我自己的Windows10系统上同时安装了VS2013和VS2017,我下载了3个版本的,如下图所示:

boost222
boost222

将boost_1_69_0-msvc-14.1-32.exe解压到指定目录

以boost_1_69_0-msvc-14.1-32.exe为例,解压后的目录结构如下图所示:

2222
2222

为了方便,我直接把boost_1_69_0-msvc-12.0-32.exe、boost_1_69_0-msvc-14.1-32.exe、boost_1_69_0-msvc-14.1-64.exe这3个程序的lib库解压到同一目录下了,分别对应lib32-msvc-12.0、lib32-msvc-14.1、 、lib64-msvc-14.1

在VS2017中使用boost1.69.0

例如,我把编译好后的boost_1_69_0源代码和lib库放置在D:\env_build\boost_1_69_0目录下,其中boost目录是存放头文件的目录,lib32-msvc-12.0、lib32-msvc-14.1、 、lib64-msvc-14.1这3个目录分别对应VS2013的32位,VS2017的32位以及VS2017的64位静态库lib目录。

源代码文件:Boost_lambda_Demo.cpp

在VS2017中创建一个VC++的控制台空项目Boost_lambda,添加一个Boost_lambda_Demo.cpp文件,代码如下:

代码语言:javascript
复制
#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>

int main(int argc, char* argv[])
{
	using namespace boost::lambda;
	typedef std::istream_iterator<int> in;

	std::for_each(
		in(std::cin), in(), std::cout << (_1 * 3) << "\n");

	return 0;
}

如下图所示:

3333
3333

从上图可以看出,由于没有包含boost库的头文件,程序报错了,所以我们还得在项目中导入头文件和lib库文件所在目录。

添加boost的头文件

右键点击【Boost_lambda】-》【属性】,在弹出的项目属性页中,依次【配置属性】-> 【C/C++】-> 【常规】->【附加包含目录】,在其中加入boost1.69.0所在目录,我的是D:\env_build\boost_1_69_0,这个根据自己解压的Boost库目录设置,如下图所示:

4
4

点击确定按钮后,再看程序中的红色报错提示没有了,说明项目中可以使用Boost库了,如下图所示:

55
55

运行结果如下图所示:

66
66

当然,由于boost的lambda的使用只需要包含头文件即可,所以不导入lib静态库文件也可以正常运行,但是如果是其他比如regex正则表达式需要依赖静态库的,则会报错,如下图所示:

regex
regex

1>LINK : fatal error LNK1104: 无法打开文件“libboost_regex-vc141-mt-gd-x32-1_69.lib” 错误原因是找不到对应的libboost_regex-vc141-mt-gd-x32-1_69.lib静态链接库

添加boost1.69.0的lib静态库文件

右键点击【Boost_lambda】-》【属性】,在弹出的项目属性页中,依次【配置属性】-> 【链接器】-> 【常规】->【附加库目录】,在其中加入boost1.69.0的lib库所在目录,由于我使用的是基于VS2017的32位x86 debug项目,所以需要加入lib32-msvc-14.1这个目录,即D:\env_build\boost_1_69_0\lib32-msvc-14.1,这个根据自己解压的Boost库目录进行设置,和项目是32位还是64位以及Visual Studio的版本有关,如下图所示:

7
7

由于boost regex库的使用不仅需要包含头文件,还需要包含对应的lib静态库文件,所以需要在项目中加入对应的静态库目录,如下图所示:

8
8

运行结果如下:

9
9

为了能看到boost regex的测试结果,我把程序直接放到腾讯云主机上的CentOS7.5系统下,创建了一个boost_regex.cpp的源代码文件和对应的jayne.txt文本文件 boost_regex.cpp的源代码文件:

代码语言:javascript
复制
#include <boost/regex.hpp>
#include <iostream>
#include <string>

int main()
{
	std::string line;
	boost::regex pattern("^Subject: (Re: |Aw: )*(.*)");

	while (std::cin)
	{
		std::getline(std::cin, line);
		boost::smatch matches;
		if (boost::regex_match(line, matches, pattern))
		{
			std::cout << matches[2] << std::endl;
		}
	}

	return 0;
}

jayne.txt文本文件

代码语言:javascript
复制
To: George Shmidlap
From: Rita Marlowe
Subject: Will Success Spoil Rock Hunter?
---
See subject.

测试结果如下图所示:

result2
result2

相关资料

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、从sourceforge上下载编译好的针对MSVC的boost1.69.0版本
  • 将boost_1_69_0-msvc-14.1-32.exe解压到指定目录
  • 在VS2017中使用boost1.69.0
    • 源代码文件:Boost_lambda_Demo.cpp
      • 添加boost的头文件
        • 添加boost1.69.0的lib静态库文件
        • 相关资料
        相关产品与服务
        云服务器
        云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档