Windows下Boost库的安装与使用

2023-05-16

目录

1、基本介绍

2、下载安装

3、配置boost环境(VS2010)

4、测试


1、基本介绍

        Boost库是为C++语言标准库提供扩展的一些C++程序库的总称,由Boost社区组织开发、维护。其目的是为C++程序员提供免费、同行审查的、可移植的程序库。Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。 (百度文库)

        Boost库内集合了大量地算法和功能实现函数,其大致有20个分类:字符串和文本处理、容器、迭代子(Iterator)、算法、函数对象和高阶编程、泛型编程、模板元编程、预处理元编程、并发编程、数学相关、纠错和测试、数据结构、输入/输出、跨语言支持、内存相关、语法分析、杂项。这些库中有些可归入多个分类。

2、下载安装

        首先获取boost库,可以直接在官网上(https://www.boost.org/)下载。

        选择一个版本下载到本地即可,这里下载的是boost_1_79_0.zip     06-Apr-2022 21:37 186.40 MB

然后解压安装包到boost_1_79_0文件夹。

        这里需要说明一下,刚开始拿到压缩包解压后,想着能够像GDAL库一样,直接拷贝到工程目录下进行包含引用。然而发现引用进去文件报错不能打开。

        所以boost库不能直接拷贝进去使用,还是需要编译一下静态库进而引用的。这里的编译与GDAL和OpenCV的安装有一定的区别,这里的编译安装,只是在对应的文件下生成静态库。

然后在boost库的根目录(解压目录boost_1_79_0)下:(图文可见)

1、双击bootstrap.bat文件,生成b2.exe;

2、在cmd中输入以下命令(未尝试)或者双击b2.exe运行。

bjam --toolset=msvc --build-type=complete stage ,回车

这里面--build-type=complete时link,runtime-link3种组合下debug, release的多线程版本都生成出来了除此之外还生成了link=static,runtime-link=static的debug, release的单线程版本。

3、等待程序编译完成,大约要十几分钟到两个小时左右,会在boost_1_79_0目录下生成bin.v2和stage两个文件夹,其中bin.v2下是生成的中间文件,大小在2.4G左右,可以直接删除。stage下才是生成的dll和lib文件(不严谨)。文件如下:

说明:

这里通过双击b2.exe进行编译的,默认在stage下生成lib文件夹,里面只包含着静态库。
如果想要生成dll动态库,可./b2 --help查看参数说明,然后需要输入相应的编译命令如:

./b2 toolset=msvc-14.1 link=static runtime-link=shared threading=multi variant=debug
其中

toolset:指定编译器,可选的如minGW、msvc等。
vs2017 : msvc-14.1,vs2015 : msvc-14.0, linux :gcc

link:生成动态链接库/静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用static方式。一般boost库可能都是以static方式编译,因为最终发布程序带着boost的dll感觉会比较累赘。

runtime-link:动态/静态链接运行时库。同样有shared和static两种方式,标记如何连接C++运行库,是包含就用静态,使用系统运行库就用动态。

threading:单/多线程编译。一般都写多线程程序,当然要指定multi方式了;如果需要编写单线程程序,那么还需要编译单线程库,可以使用single方式。

variant:编译debug/release版本。一般都是程序的debug版本对应库的debug版本,所以两个都编译。
        那么如果需要生成dll,可以使用link=shared方式生成。参考Boost编译与使用 - 知乎

生成文件命名说明:

  • 以“lib”开头的是“link=static”版本(静态链接库版本,没有dll),而直接以“boost”开头的是“link=shared”版本(动态链接库版本,包含lib和dll)。
  • 所有的库都含有"boost"前缀。
  • 紧随其后的是boost库名称(比如date_time库)。
  • 然后是编译器的版本,与库名称之间以"-"而不是下划线"_"分隔(比如 -vc120)。
  • 有“mt”的为“threading=multi”版本,没有的则是“threading=single”版本。
  • 有“s”的为“runtime-link=static”版本,没有的则是“runtime-link=shared”版本。
  • 有“gd”的为debug版本,没有的则是release版本。
  • 所有的库都含有boost库的版本号结尾(比如1_56,其中的"."以下划线"_"代替)

3、配置boost环境(VS2010)

项目->属性,在弹出的属性对话框中:

1、配置属性->VC++目录:

(1)、"包含目录": boost的根目录,例:D:\my_workspace\C_program\C_boost\boost_1_79_0

(2)、"库目录": stage下的链接库目录,例:D:\my_workspace\C_program\C_boost\boost_1_79_0\stage\lib

2、配置属性->链接器->常规:"附加库目录":同上面的"库目录",例:D:\my_workspace\C_program\C_boost\boost_1_79_0\stage\lib

4、测试

#include <iostream>
#include <boost/version.hpp>
#include <boost/config.hpp>

using namespace std;
int main()
{
	cout<<BOOST_VERSION<<endl;
	cout<<BOOST_LIB_VERSION<<endl;
	cout<<BOOST_PLATFORM<<endl;
	cout<<BOOST_COMPILER<<endl;
	cout<<BOOST_STDLIB<<endl;
	getchar();
	return 0;
}

 以上就将boost库引入了vs工程,下面就可以愉快地调用其开发实现自己的任务了。

其他测试

#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>

#include <boost/timer.hpp>
#include <boost/progress.hpp>

#include <libs/date_time/src/gregorian/greg_names.hpp>
#include <libs/date_time/src/gregorian/greg_month.cpp>
#include <libs/date_time/src/gregorian/gregorian_types.cpp>

#include <boost/date_time/posix_time/posix_time.hpp>

using namespace boost;

int main()
{
	boost::timer t;

	boost::progress_display pd(100);

	for (int i = 0; i < 100; ++i) //进度条
	{
		++pd;
	}

	boost::gregorian::date dt(2009, 12, 8); //date_time 库
	assert(dt.year() == 2009);
	assert(dt.day() == 8);
	boost::gregorian::date::ymd_type ymd = dt.year_month_day();
	std::cout<<"\n"<<ymd.year<<"/"<<ymd.month<<"/"<<ymd.day<<" the day is "
		<<dt.day_of_year() <<" days of this year"<< std::endl;

	std::cout << boost::gregorian::to_iso_extended_string(dt) << std::endl; //转换为其他格式
	std::cout << boost::gregorian::to_iso_string(dt) << std::endl;
	std::cout << boost::gregorian::to_simple_string(dt) << std::endl<<std::endl;

	//对数组排序操作
	std::vector<int> test_vc(100);
	std::vector<int>::iterator beg_it = test_vc.begin();
	std::vector<int>::iterator end_it = test_vc.end();
	std::srand(std::time(NULL));

	std::for_each(beg_it, end_it, [](int& n){n = rand(); });
	std::copy(beg_it, end_it, std::ostream_iterator<int>(std::cout, " "));
	std::cout << std::endl << std::endl;
	std::sort(beg_it, end_it, std::greater<int>());
	std::copy(beg_it, end_it, std::ostream_iterator<int>(std::cout, " "));
	std::cout << std::endl<<std::endl;

	boost::posix_time::ptime pt(boost::gregorian::date(2005, 2, 6));

	std::cout << t.elapsed() << "s" << std::endl; //程序运行时间

	system("pause");

	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows下Boost库的安装与使用 的相关文章

  • roslaunch px4 multi_uav_mavros_sitl_sdf.launch报错

    转载自 xff1a https www cnblogs com pig fly p 13971458 html 在试图运行multi uav mavros sitl sdf launch时报错 xff1a while processing
  • secureCRT串口无法输入

    用串口配置交换机的时候 xff0c 出现的问题 xff1a 用secureCRT建了一个串口COM1后 xff0c 连接上开发板后 xff0c 可以正确接受和显示串口的输出 xff0c 但是按键输入无效 解决方法 xff1a Session
  • 经典编程书籍(C++, 网络, Windows, Linux)【转载】

    书单中列举的都是相关领域的经典书籍 xff0c 必读之作 此书单的编辑参考了很多网站 xff0c 包括一些名家的推荐 xff0c 例如侯捷 xff0c 孟岩 xff0c 荣耀 xff0c 潘爱民等等 xff0c 在此也向这些前辈表示感谢 1
  • Ubuntu 20.04 LTS 发布最终 Beta 版本

    Ubuntu 团队通过邮件列表宣布推出 Ubuntu 20 04 LTS 最终 Beta 版本 xff0c 并预告稳定版将于2020年4月23日发布 虽然是最终的 Beta 版本 xff0c 但毕竟尚处于测试阶段 xff0c 因此不建议在生
  • Git——6个免费的GUI客户端

    目录 1 简介 1 1 测试的工具 1 2 测试方法 2 SourceTree 2 1 详情 2 2 概述 2 3 印象 3 GitHub Desktop 3 1 详情 3 2 概述 3 3 印象 4 Git Extensions 4 1
  • SourceTree Git管理神器使用教程详解

    目录 前言 xff1a SourceTree Github Desktop TortoiseGit 可视化管理工具对比 xff1a SourceTree介绍和Atlassian账号注册和登录教程 xff1a 连接Gitee or GitHu
  • 软件测试项目篇

    目录 1 项目启动2 需求分析3 制定测试方案 xff08 计划 43 策略 xff09 4 测试执行流程 1 项目启动 了解项目背景 2 需求分析 功能需求 xff1a 文件类型 xff1a 支持所有的文件压缩文件个数 xff1a 最多压
  • LTE系统信息(1)-MIB

    1 什么是MIB 为了能正常接入小区 xff0c UE在完成扫频 xff08 无论是指定频点扫频还是全频段扫频 xff0c 目的都是为了找到合适的中心载波频点 xff0c 参考 LTE物理传输资源 xff08 3 xff09 时频资源 xf
  • vi编辑器

    目录 简介 基本操作 1 移动光标 2 定位 3 删除 4 复制 5 查找
  • ubuntu下进行串口通信

    1 首先下载串口通信需要的uart文件 xff0c 用于数据封装json文件 下载地址 xff1a http download csdn net download m zhangjingdong 10164628 http download
  • GPS轨迹飘点处理(原创)

    当我们处理gps设备传过来的数据时 xff0c 最让人头疼的事情莫过于设备定位异常所传输的异常点了 xff0c 我们习惯的叫它为飘点 这些数据是设备层面的异常 xff0c 目前没有什么有效的方法来减少设备发送的飘点 但是我们可以通过程序来过
  • 创建多个带有摄像头的四旋翼gazebo模型

    完整的model文件和launch文件我上传在资源里 xff1a 多个带有摄像头的四旋翼gazebo模型 zip 1 启动多个iris四旋翼模型 PX4源码里有iris sdf等四旋翼模型文件 xff0c 但是如果要启动多个iris模型和m
  • 最全面的PLC学习网站

    http www gkwo net wenku list 13 htm PLC工控资料学习网
  • ImportError: Failed to import test module: 2

    1 在进行unittest测试时 xff0c 运行报错如下 导入import unittest 包 xff0c 创建的文件名字得是 Test 开头的 xff0c 不然报如下的错误 我的文件名字是 2 unittest简单实用 first t
  • 面试:微信朋友圈测试流程(功能测试,性能测试,界面测试,易用性测试,网络测试,兼容性测试,安全性测试)

  • HTTP请求/响应报文结构

    HTTP请求 响应报文结构 HTTP请求报文 一个HTTP请求报文由四个部分组成 xff1a 请求行 请求头部 空行 请求数据 1 请求行 请求行由请求方法字段 URL字段和HTTP协议版本字段3个字段组成 xff0c 它们用空格分隔 比如
  • MySQL数据库面试知识点

    MySQL数据库面试知识点 转自 xff1a https blog csdn net ThinkWon article details 104778621
  • 牛客网试题+答案分析+大牛面试经验(1)

    一 选择题 xff08 1 xff09 有以下程序 xff1a include lt stdio h gt char fun char c if c lt 61 39 Z 39 amp amp c gt 61 39 A 39 c 61 39
  • C++动态链接库中的全局变量面试题

    其实主要问题是三个模块 xff1a 模块 a 静态库 a 模块 b 二进制 b 静态引用a 动态加载c 模块 c 动态链接库c 静态引用a 关键在于静态库a里有一个静态全局变量 xff0c 没错就是我们的日志模块 原先的这个静态的模块中的静
  • 长连接与短连接的区别以及使用场景

    首先介绍下短链接和长连接的区别 xff1a 短连接 连接 gt 传输数据 gt 关闭连接 比如HTTP是无状态的的短链接 xff0c 浏览器和服务器每进行一次HTTP操作 xff0c 就建立一次连接 xff0c 但任务结束就中断连接 因为连

随机推荐

  • 进程的有哪几种状态,状态转换图,及导致转换的事件

    进程的特征与三种基本状态 1 特征 xff1a 1 xff1a 动态性 xff0c 2 xff1a 并发性 xff0c 3 xff1a 独立性 xff0c 4 xff1a 异步性 2 状态 xff1a 1 xff1a 就绪状态 当进程已分配
  • 请问单核机器上写多线程程序,是否需要考虑加锁,为什么?

    参考回答 xff1a 在单核机器上写多线程程序 xff0c 仍然需要线程锁 因为线程锁通常用来实现线程的同步和通信 在单核机器上的多线程程序 xff0c 仍然存在线程同步的问题 因为在抢占式操作系统中 xff0c 通常为 每个线程分配一个时
  • 阿木p200四旋翼配置经验笔记

    本文初次写于2021 06 09 我做编队试验用的阿木P200四旋翼 xff0c 空循环uwb定位下完成了机载计算机控制的编队飞行以及二维码引导降落 记录一下对到手的P200飞机仍需要更改调试的配置 xff1a 硬件加装 加装uwb标签用于
  • Linux C/C++ 学习路线

    一 秋招 Linux C C 43 43 offer 情况 二 Linux C C 43 43 方向的一些思考 三 计算机基础知识的梳理 四 C 43 43 方向的深入学习路线 五 项目 43 亮点 43 面试的一些思考 六 总结 前言 L
  • 如何在简历中描述自己的项目

    项目经历 很多人在描述项目经历的时候容易陷入一个误区 讲套话 xff0c 如 xff1a 用html xff0c css编写基本页面 xff0c 用js XX库完成页面交互 动画 用AJAX xff08 axios库等 xff09 实现前后
  • 网络工程师(路由交换)必备面试题

    一 TCP IP通信原理 物理层 1 OSI七层模型与TCP IP模型的区别 xff1f 2 异步传输与同步传输的优缺点与区别 应用场景 xff1f 3 多模光纤与单模光纤的区别以及用途 xff1f 4 RJ45线序568A和568B的区别
  • git show/diff 界面操作

    最近发现在git show或者git diff的界面 xff0c 也就是显示对比差异的时候 xff0c 无法编辑 xff0c 很不爽 xff0c 在网上也找不到类似说明 xff1a 仔细研究后发现有很多快捷键说明 xff0c 部分如下 xf
  • 在linux上用dd命令实现ghost功能 -- 神奇的fdisk和dd命令

    神奇的fdisk和dd命令 深深的苦恼中 xff0c 灵光乍现 xff1a 神奇的ghost的原理是什么呢 xff1f 不就是数据复制吗 xff1f Linux下的dd命令不就是最强大的数据复制工具 xff01 既然如此 xff0c 我为什
  • Linux笔记:文本编辑器nano简单说明

    文章目录 目的快速使用常用命令nano语法常用选项总结 目的 pico是Linux上的一个文本编辑器 xff0c nano是从pico发展而来的文本编辑器 xff08 很多系统上你使用pico命令打开的也是nano xff09 nano i
  • 在STM32Cube中使用FreeRTOS:入门体验

    文章目录 目的基础说明入门体验基础配置任务调度消息队列信号量互斥量定时器 其它补充使用ST LINK调试中断嵌套 总结 目的 FreeRTOS是现在比较流行的主要应用于单片机等性能相对较低 xff0c 对实时性要求又比较高的嵌入式应用场景中
  • FreeRTOS入门(07):流缓冲区 & 消息缓冲区

    文章目录 目的基础说明流缓冲区相关函数使用演示 消息缓冲区相关函数使用演示 总结 目的 缓冲区是操作系统中常见的一种用于任务间数据传递的机制 这篇文章将对FreeRTOS中相关内容做个介绍 本文代码测试环境见前面的文章 xff1a Free
  • 树莓派4b 安装buster系统 安装ROS与MAVROS 连接pixhawk飞控

    手把手教程 无屏幕的树莓派4b 安装Rapbian buster系统 安装ROS与MAVROS 连接pixhawk飞控 xff08 1 xff09 准备 xff1a 树莓派4b 1 32G内存卡 1 树莓派官方raspbian buster
  • 阿克曼前轮转向车gazebo模型

    想要一个阿克曼转向结构车的gazebo模型 xff0c 要求能够用ros话题控制前进速度和前轮转角 令人惊讶的是 xff0c 网上基本没有这种模型 racecar模型 首先古月居提供了一个racecar的模型 xff0c 可以控制速度和前轮
  • Jetson TX2 在docker容器中import torch 报错的处理方式

    1 Jetson TX2 信息 xff1a 驱动版本 xff1a JetPack 4 6 1 2 docker信息 xff1a docker 镜像 xff1a pull 了 nvcr io nvidia l4t ml r32 7 1 py3
  • 史上最详细的PID教程——理解PID原理及优化算法

    Matlab动态PID仿真及PID知识梳理 云社区 华为云 huaweicloud com 位置式PID与增量式PID区别浅析 Z小旋 CSDN博客 增量式pid https zhuanlan zhihu com p 38337248 期望
  • JAVA经典试卷(理工)

    一 判断题 xff08 本大题共20小题 xff0c 每小题1分 xff0c 总计20分 xff09 1 xff0e final类能派生子类 2 xff0e 子类要调用父类的方法 xff0c 必须使用super关键字 3 xff0e Jav
  • git与gitee学习笔记

    随着时间推移 xff0c 除去常量 xff0c 任何事物都是在变化的 xff0c 如果用一根曲线表示 xff0c 横轴代表时间 xff0c 纵轴代表事物量 xff0c 那么所绘制的曲线 xff0c 在时间足够长的情况下 xff0c 必然是高
  • docker基础命令操作---镜像操作

    1 搜索官方仓库镜像 xff1a docker search image name 镜像名 例如 xff1a docker search nginx 命令执行结果参数说明 xff1a 参数 说明 NAME 镜像名称 DESCRIPTION
  • ESP8266连接天猫精灵(一)

    背景 接触天猫精灵后 xff0c 就想作一些小东西能接入天猫精灵 查看官网的文档后 xff0c 选择了ESP系列 xff0c 官方在文档中也比较推荐 读技术文档是个很难受的事情 xff0c 容易犯困 xff0c 最好有可以操作的设备 准备如
  • Windows下Boost库的安装与使用

    目录 1 基本介绍 2 下载安装 3 配置boost环境 xff08 VS2010 xff09 4 测试 1 基本介绍 Boost库是为C 43 43 语言标准库提供扩展的一些C 43 43 程序库的总称 xff0c 由Boost社区组织开