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

在Windows10中Visual Studio2017中使用boost1.69.0

作者头像
ccf19881030
发布于 2020-03-10 08:19:11
发布于 2020-03-10 08:19:11
4.5K00
代码可运行
举报
文章被收录于专栏:ccf19881030的博客ccf19881030的博客
运行总次数:0
代码可运行

前言

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版本,如下图所示:

上图中是针对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个版本的,如下图所示:

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

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

为了方便,我直接把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
代码运行次数:0
运行
AI代码解释
复制
#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;
}

如下图所示:

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

添加boost的头文件

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

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

运行结果如下图所示:

当然,由于boost的lambda的使用只需要包含头文件即可,所以不导入lib静态库文件也可以正常运行,但是如果是其他比如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的版本有关,如下图所示:

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

运行结果如下:

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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
代码运行次数:0
运行
AI代码解释
复制
To: George Shmidlap
From: Rita Marlowe
Subject: Will Success Spoil Rock Hunter?
---
See subject.

测试结果如下图所示:

相关资料

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
C++初等数论
数学知识的根基对学好编程至关重要。本文和大家讲讲在编程中要用到的数论知识。如同余式、欧拉定理和欧拉函数、费马小定理、威尔逊定理、裴蜀定理、模运算意义下的逆元、扩展欧几里得算法、孙子定理(中国剩余定理)。
一枚大果壳
2024/03/11
2730
C++初等数论
RSA加密算法详细解说[通俗易懂]
RSA加密算法是一种非对称加密算法,于1977年由 罗纳德·李维斯特(Ron Rivest) 阿迪·萨莫尔(Adi Shamir) 伦纳德·阿德曼(Leonard Adleman)一起提出的。
全栈程序员站长
2022/07/01
6.3K0
RSA加密算法详细解说[通俗易懂]
数论的奥秘:RSA 加密算法背后的数学之美(上篇)
👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
Lorin 洛林
2023/11/25
4770
数论的奥秘:RSA 加密算法背后的数学之美(上篇)
《程序员数学:素数》—— 你真的了解 RSA 加密算法吗?
作者:小傅哥 博客:https://bugstack.cn ❝沉淀、分享、成长,让自己和他人都能有所收获!😜 ❞ 一、什么是素数 二、对称加密和非对称加密 三、算法公式推导 四、关于RSA算法 五、实现RSA算法 1. 互为质数的p、q 2. 乘积n 3. 欧拉公式 φ(n) 4. 选取公钥e 5. 选取私钥d 6. 加密 7. 解密 8. 测试 六、RSA数学原理 1. 模运算 2. 最大公约数 3. 线性同余方程 4. 中国余数定理 5. 费马小定理 6. 算法证明 七、常见面试题 ----
小傅哥
2022/12/13
2.3K0
《程序员数学:素数》—— 你真的了解 RSA 加密算法吗?
非对称加密技术- RSA算法数学原理分析
非对称加密技术,在现在网络中,有非常广泛应用。加密技术更是数字货币的基础。 所谓非对称,就是指该算法需要一对密钥,使用其中一个(公钥)加密,则需要用另一个(私钥)才能解密。 但是对于其原理大部分同学应该都是一知半解,今天就来分析下经典的非对称加密算法 - RSA算法。 通过本文的分析,可以更好的理解非对称加密原理,可以让我们更好的使用非对称加密技术。 题外话: 并博客一直有打算写一系列文章通俗的密码学,昨天给站点上https, 因其中使用了RSA算法,就查了一下,发现现在网上介绍RSA算法的文章都写的太难理
Tiny熊
2018/06/21
1.6K0
RSA 这俩世纪最重要的算法之一No.91
本文大概1000字,读完共需5分钟 Diffie–Hellman加密算法的劣势 上一篇文章我们聊到 Diffie–Hellman key exchange 这个算法。(密钥交换有点不安全 No.8
大蕉
2018/04/26
9930
RSA 这俩世纪最重要的算法之一No.91
目前已知的最强加密算法RSA
前面有人让我讲解一下RSA算法,今天我就用我所学的知识讲解一下,首先我们先了解一下RSA
IT大咖说
2020/12/29
1.6K0
目前已知的最强加密算法RSA
图解|什么是RSA算法
前阵子闲来无事看了会儿《数学之美》,其中第17章讲述了由电视剧《暗算》展开的密码学背后的一些数学原理。
五分钟学算法
2020/09/07
2.7K0
图解|什么是RSA算法
欧拉函数最全总结
计算这个值的方法就叫做欧拉函数,以φ(n)表示。在1到8之中,与8形成互质关系的是1、3、5、7,所以 φ(n) = 4。
全栈程序员站长
2022/09/23
2K0
欧拉函数最全总结
使用Python实现RSA加密算法及详解RSA算法「建议收藏」
代码已经放上github : https://github.com/chroje/RSA
全栈程序员站长
2022/08/15
7.1K0
使用Python实现RSA加密算法及详解RSA算法「建议收藏」
一文搞懂RSA算法原理及简单实现
RSA算法是最重要的算法之一,它是一种非对称加密,是目前最有影响力的加密方式之一。这篇文章我们通过实现一种简单的RSA加密来探究它的原理。
BennuCTech
2021/12/17
1.8K0
RSA算法原理——(3)RSA加解密过程及公式论证
上期(RSA简介及基础数论知识)为大家介绍了:互质、欧拉函数、欧拉定理、模反元素 这四个数论的知识点,而这四个知识点是理解RSA加密算法的基石,忘了的同学可以快速的回顾一遍。
全栈程序员站长
2022/09/02
3.6K1
五分钟知识科普:什么是 RSA 算法
RSA 是 1977 年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。
五分钟学算法
2019/06/18
1.8K0
RSA算法原理一点通
我们知道IFAA标准、SOTER标准所定义的加解密算法为RSA2048,FIDO方案所定义的加解密算法为椭圆曲线算法,今年特火的区块链技术也采用的是椭圆曲线算法。那么今天我们先来聊聊RSA算法的基本原理!只需要具备高中数学基础知识,花1个小时即可理解。 (以下内容为网络内容整理)如果没有理解,请告诉我,保证让你明明白白。 祝大家中秋快乐! 进入正题之前,我先简单介绍一下,什么是"公钥加密算法"。 一、一点历史 1976年以前,所有的加密方法都是同一种模式: (1)甲方选择某一种加密规则,对信息进行加密; (
安智客
2018/02/24
1.4K0
RSA算法原理一点通
RSA算法原理(二)
上一次,我介绍了一些数论知识。 有了这些知识,我们就可以看懂RSA算法。这是目前地球上最重要的加密算法。 六、密钥生成的步骤 我们通过一个例子,来理解RSA算法。假设爱丽丝要与鲍勃进行加密通信,她该怎
ruanyf
2018/04/12
1.4K0
RSA算法原理(二)
CTF|玩转RSA加密算法(一)
RSA是一种非对称加密算法,它由 公钥(n/e),私钥(n/d),明文M和密文C组成。我们做CTF题目时,一般题目中会给出公钥和密文让我们推出对应的私钥或者明文。RSA的相关公式都写在上面脑图中,在正式讲解RSA加密算法前我们先来普及一波数学的基本知识。 一. 相关数学基础 1.1 素数和互质数 素数也称质数,它的定义为除本身和 1 的乘积外,不能表示其他数的乘积。比如2,3,5,7,11,13,17……等都是素数。 互素数也称互质数,定义是公约数只有1的两个自然数,如: 1和任何自然数 1 & 2
漏斗社区
2018/03/28
6K0
CTF|玩转RSA加密算法(一)
RSA原理
素数:素数又称质数,指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。
安恒网络空间安全讲武堂
2018/12/24
3K0
世界总决赛选手带你玩转数论 1——素数及素性检测
笔者曾获得 ICPC 2020 世界总决赛资格,ICPC 2020 亚洲区域总决赛第五名。
ACM算法日常
2021/06/16
8730
RSA加密算法详解及例题
我这里就不对RSA的发明背景做介绍了,你只要知道RSA加密算法是非常非常重要的加密算法,放在现在的时代亦是如此。
全栈程序员站长
2022/07/01
1.7K0
RSA加密算法是怎么回事?难懂吗?
RSA加密算法非常有名,在计算机领域的应用非常广泛,几乎是一般用户在信息加密时的首选。
叶锦鲤
2020/05/20
1.4K0
相关推荐
C++初等数论
更多 >
LV.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静态库文件
  • 相关资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档