Windows下Boost库的安装与使用

简介: Windows下Boost库的安装与使用

目录

1、基本介绍

2、下载安装

3、配置boost环境(VS2010)

4、测试


1、基本介绍


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


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


2、下载安装


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

1.png

选择一个版本下载到本地即可,这里下载的是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文件(不严谨)。文件如下:

image.png

说明


这里通过双击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

1.png


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;
}

image.png

以上就将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;
}

1.png

目录
相关文章
|
7月前
|
人工智能 JavaScript 开发工具
极速上手!Claude Code 原生支持 Windows 免WSL安装教程
Claude Code 现已支持 Windows 原生运行,无需 WSL 配置。本文提供详细安装教程,涵盖 Node.js 环境验证、Git 安装及 Claude Code 配置步骤,助你快速上手这一强大 AI 编程工具。
8566 7
|
7月前
|
存储 虚拟化 Windows
VMware安装Windows10
本案例介绍了在Windows系统上使用VMware Workstation 17.5 Pro安装配置Windows 10虚拟机的详细步骤,包括所需设备、软件下载链接、虚拟机设置及系统安装全过程。
4591 134
VMware安装Windows10
|
8月前
|
Ubuntu Unix Linux
在Windows上轻松安装和使用Ubuntu的方法详解
继续点击“Continue”按钮以继续安装流程,随后选择清理磁盘并安装操作系统的选项。 接下来,在安装过程中,你需要选择时区。为了与你的地理位置相匹配,请选择中国上海作为你的时区设置。 在安装过程中,你还需要设置计算机的名称以及账号密码。请务必牢记这些信息,因为它们将作为你登录系统的凭证。
|
6月前
|
安全 Ubuntu iOS开发
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
264 3
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
|
6月前
|
Ubuntu API C++
C++标准库、Windows API及Ubuntu API的综合应用
总之,C++标准库、Windows API和Ubuntu API的综合应用是一项挑战性较大的任务,需要开发者具备跨平台编程的深入知识和丰富经验。通过合理的架构设计和有效的工具选择,可以在不同的操作系统平台上高效地开发和部署应用程序。
259 11
|
7月前
|
安全 数据安全/隐私保护 Windows
ZyperWin++使用教程!让Windows更丝滑!c盘飘红一键搞定!ZyperWin++解决系统优化、Office安装和系统激活
ZyperWin++是一款仅5MB的开源免费Windows优化工具,支持快速优化、自定义设置与垃圾清理,兼具系统加速、隐私保护、Office安装等功能,轻便无广告,小白也能轻松上手,是提升电脑性能的全能管家。
2103 0
|
8月前
|
Ubuntu Linux Windows
如何在Ubuntu系统中安装Wine,借此来运行Windows程序
熟悉的登录画面出现,在Ubuntu系统中扫描登录微信程序。
|
8月前
|
Ubuntu Linux Shell
手把手教你安装适用于Linux的Windows子系统——Ubuntu
重启完成,你看看重新打开Ubuntu是不是发生了变化,等待几分钟,系统配置完成,根据提示设置用户名和密码即可
|
8月前
|
Ubuntu Linux 数据安全/隐私保护
Windows上快速安装Linux子系统Ubuntu
Installing, this may take a few minutes...WslRegisterDistribution failed with error: 0x800701bcError: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernelPress any key to continue... 原因是 wsl1 升级到 wsl2 之后,内核却没有升级。 解决:下载最新的wsl安装包(wsl安装包)

热门文章

最新文章