Visual Studio 2022 配置 Boost 库

news2024/11/24 1:44:19

一、使用预编译版本

尽量不要使用预编译版本,因为可能构建的不完全,还得重新构建,不如一步到位

1. 下载预编译的 Boost 库

下载:Boost C++ Libraries - Browse /boost-binaries at SourceForge.net

2. 选择 msvc 版本,推荐选择最新的

3. 安装 Boost 库

4. 在 Visual Studio 中配置 Boost

1.)配置包含目录

  • 在 Visual Studio 中,右键点击你的项目,选择“属性”
  • 在“VC++ 目录”中找到“包含目录”,将解压后的 Boost 目录路径(例如 C:\Boost\boost_1_xx_x)添加进去

2.)配置库目录

  • 继续在“VC++ 目录”中,找到“库目录”,将 lib 目录路径添加进去(例如 C:\Boost\boost_1_xx_x\lib64-msvc-xx.x,根据解压后的实际目录可能有所不同)

3.)配置附加依赖项

  • 在项目属性页面,展开“链接器”,选择“输入”→“附加依赖项
  • 在此处添加你需要使用的 Boost 库的 .lib 文件,例如 libboost_filesystem-vc143-mt-x64-1_xx.lib
  • 库文件的名称可能不同,具体取决于 Boost 版本和编译器的版本

二、使用源码自行编译(推荐)

1. 准备工作

  • 下载 Boost 源代码: Boost Downloads

  • 确保安装了所需工具

    • Visual Studio 2022(或其他版本)和 C++ 开发工具
    • CMake(可选,Boost 支持 CMake,但通常使用 b2
  • 解压下载的源代码

2. 构建Boost

1.)打开vs命令行工具

2.)导航到 Boost 目录

使用 cd 命令切换到 Boost 源代码目录。例如:

cd C:\Boost\boost_1_xx_x

3.) 初始化 Boost.Build

在 Boost 目录中,运行以下命令来初始化 Boost.Build 系统:

bootstrap.bat

运行成功后,将生成一个名为 b2.exe 的文件

4.)编译 x86 和 x64 版本

命令行参数注释

  • toolset=msvc-14.3 表示使用 Visual Studio 2022
  • --build-type=complete 表示构建所有 Boost 组件
  • --with-filesystem --with-system 表示只构建 filesystem 和 system 库
  • architecture=x86 和 address-model=32 表示编译 32 位版本
  • architecture=x86 和 address-model=64 表示编译 64 位版本
  • link=static,shared 表示同时生成静态库和动态库
  • variant=debug,release 表示同时编译调试和发布版本
  • stage 表示将生成的库文件放到 stage 目录

运行以下命令来构建 x86 版本的 filesystem 和 system库:

b2 toolset=msvc-14.3 address-model=32 --with-filesystem --with-system stage

运行以下命令来构建 x64 版本的 filesystem 和 system库:

b2 toolset=msvc-14.3 address-model=64 --with-filesystem --with-system stage

运行以下命令来构建  x86 版本完整库:

b2 toolset=msvc-14.3 --build-type=complete architecture=x86 address-model=32 threading=multi link=static,shared variant=debug,release stage

运行以下命令来构建  x64 版本完整库:

b2 toolset=msvc-14.3 --build-type=complete architecture=x86 address-model=64 threading=multi link=static,shared variant=debug,release stage

5.)检查生成的库文件

生成的库文件将在 boost_1_xx_x\stage\lib 目录下。你应该可以找到以下文件:

  • libboost_filesystem-vc143-mt-x32-1_xx.lib(x86 版本)
  • libboost_system-vc143-mt-x32-1_xx.lib(x86 版本)
  • libboost_filesystem-vc143-mt-x64-1_xx.lib(x64 版本)
  • libboost_system-vc143-mt-x64-1_xx.lib(x64 版本)

6.)使用不同版本的 Visual Studio

Boost 支持多种版本的 Visual Studio。以下是一些常见的版本:

  • Visual Studio 2019(msvc-14.2)
  • Visual Studio 2017(msvc-14.1)
  • Visual Studio 2015(msvc-14.0)

在 VS 中查看编译器版本

b2 命令中更改 toolset 参数以指定不同的编译器版本。例如,Visual Studio 2015 编译:

b2 toolset=msvc-14.0 address-model=32 --with-filesystem --with-system stage

三、使用 NuGet 安装 Boost

如果不想手动下载和编译 Boost,可以使用 Visual Studio 的 NuGet 包管理器安装 Boost:

1. 打开 NuGet 包管理器控制台

在 Visual Studio 的顶部菜单栏中,点击“工具” → “NuGet 包管理器” → “包管理器控制台

2. 在控制台中安装 Boost

打开包管理器控制台后,在控制台中输入以下命令来安装 Boost:

Install-Package boost

如果需要特定版本的 Boost,可以通过指定版本来安装,例如:

Install-Package boost -Version 1.76.0

3. NuGet 会自动处理依赖项

NuGet 包管理器会自动将 Boost 的引用添加到项目中,并配置好包含路径和库路径

补充:

1. 测试 Boost

#include <boost/filesystem.hpp>
#include <iostream>

int main() {
    boost::filesystem::path p("C:\\example");
    std::cout << "Path is: " << p << std::endl;
    return 0;
}

2. 如果没有默认的 NuGet 源怎么办?

如果在控制台中找不到 Boost 包,可能是你的 NuGet 源配置有问题。你可以通过以下命令检查当前的包源:

Get-PackageSource

如果没有看到 nuget.org,可以通过以下命令添加:

Register-PackageSource -Name nuget.org -Location https://api.nuget.org/v3/index.json -ProviderName NuGet

3. 出现 LNK1104 错误,提示找不到 .lib

出现 LNK1104 错误,提示找不到 xxx.lib,通常是由于以下几个原因:

库文件没有生成:安装 Boost 时,特定版本、特定配置(例如 32 位、64 位、多线程、静态库或动态库)下的库文件可能没有生成

自动链接功能错误:Boost 使用 auto_link 特性自动选择库文件,但你当前的编译器、平台或配置和库文件不匹配

编译时配置不匹配:你使用的 Boost 版本、编译器版本和架构(x86 或 x64)不一致

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2216427.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何将一张图片分成四份,四宫格?图片分割的8种简单方法

如何将一张图片分成四份&#xff0c;四宫格&#xff1f;在日常的图像处理任务中&#xff0c;我们时常会遇到各种特殊的需求。今天&#xff0c;我就遇到了一项颇具挑战性的任务——在特殊情况下&#xff0c;需要将一张图片精确地分成四份&#xff0c;形成一个标准的四宫格。这项…

SQL第15课——插入数据

介绍利用SQL的insert语句将数据插入表中。 15.1 数据插入 select是最常用的语句&#xff0c;但是还有3个常用的SQL语句&#xff0c;第一个就是insert&#xff0c; insert&#xff1a;用来将行插入&#xff08;或添加&#xff09;到数据库表。插入的3中方式&#xff1a; 1. …

光伏仿真系统在光伏项目开发中有哪些应用场景?

光伏仿真系统在光伏项目开发中的应用场景广泛&#xff0c;涵盖了从项目规划、设计优化到运维管理的全过程。 一、项目规划与选址 1、气象模拟与评估 光伏仿真系统能够基于历史气象数据和先进的预测模型&#xff0c;模拟不同地理位置、不同季节和时间段的光照强度、温度、湿度…

网络层及ip报头

★★★★★默写&#xff1a; A类&#xff1a;0~127 B类&#xff1a;128~191 C类&#xff1a;192~223 A类私网&#xff1a;10.0.0 - 10.255.255.255 B类私网&#xff1a;172.16.0.0 - 172.31.255.255 C类私网&#xff1a;19.168.0.0 - 192.168.255.255 特殊&#xff1a; 0.0.0…

百度智能云新一代云原生产品加速 AI 原生应用落地

本文整理自百度云智峰会 2024 —— 云原生论坛的同名演讲。 今天为大家分享在过去的一年里&#xff0c;围绕 AI 原生的大背景下&#xff0c;百度智能云在基础公有云的计算、存储、网络以及云原生等产品和技术方面所做出的核心工作。 随着大模型所带来的 AI 技术的代际演化&…

用Spring AI 做智能客服,基于私有知识库和RAG技术

Java智能客服系统运用RAG技术提升答疑精准度 基于Spring ai 的 RAG&#xff08;检索增强生成&#xff09;技术&#xff0c;Java智能客服系统能够利用私有知识库中的信息提供更准确的答疑服务。 它的核心思路是&#xff1a; 首先&#xff0c;将客服QA以Word形式导入到系统中&…

python配合yolo分类模型开发分类软件

上一篇文章写了yolo的分类模型的训练&#xff0c;写篇文章基于yolo分类模型开发分类软件。开发环境:pycharm&#xff0c;PySide6 6.6.1 &#xff0c;PySide6-Addons 6.6.1&#xff0c;PySide6-Essentials 6.6.1&#xff0c;torch 2.3.1cu121&#xff0c;torchaudio 2.3.1cu121&…

能源领域下暖通行业现状-研究

基于AI大语言模型的暖通行业能源管理系统构建研究 一、能源管理中的突出问题 1. **能源消耗监测不准确** 现有的监测系统在获取设备实时能耗数据方面存在精度不足的问题&#xff0c;难以准确反映能源的实际使用情况。这使得节能决策缺乏可靠的数据支持&#xff0c;无法精准定位…

Hbase安装及使用

安装 官网下载:Apache HBase – Apache HBase Downloads 启动 先启动zookeeper及hadoop 关系&#xff1a;HBase通过Zookeeper来做master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。 再启动start-hbase.sh(/opt/module/hbase-2.2.3/bin&#xf…

大华智能云网关注册管理平台 SQL注入漏洞复现(CNVD-2024-38747)

0x01 产品简介 大华智能云网关注册管理平台是一款专为解决社会面视频资源接入问题而设计的高效、便捷的管理工具,平台凭借其高效接入、灵活部署、安全保障、兼容性和便捷管理等特点,成为了解决社会面视频资源接入问题的优选方案。该平台不仅提高了联网效率,降低了联网成本,…

【计算机网络】详解IP协议网段划分路由转发子网掩码网络号

一、IP功能 IP可以实现主机定位和路由选择&#xff0c;提供一种能力&#xff0c;将数据可靠地从A点跨网络送到B点。数据先根据目的IP在局域网之间进行转发&#xff0c;再在局域网内进行内网转发。 二、IP协议报头 4 位版本号(version)&#xff1a;指定 IP 协议的版本&#xff…

如何轻松使用pip安装Git仓库中的私有Python模块(使用pip和Git仓库发布和安装私有Python模块)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 Git模块 📒📝 Git仓库要求🔖 项目目录结构🔖 文件说明📝 编写setup.py📝 配置MANIFEST.in📝 推送代码到Git仓库📝 使用pip安装模块🔖 使用用户名和密码🔖 使用Personal Access Token (PAT)🔖 示例📝 更…

opencv外接矩形cv2.boundingRect和cv2.minAreaRect区别

在OpenCV中&#xff0c;cv2.boundingRect和cv2.minAreaRect是两个用于获取图像中形状边界的函数&#xff0c;但它们在功能和返回结果上有所不同。以下是两者的详细区别&#xff1a; 1. cv2.boundingRect 和 cv2.minAreaRect 功能描述 cv2.boundingRect 主要是用来计算图像轮廓…

企业资产安全之数据防泄密要领

在数字化时代&#xff0c;数据已成为企业最宝贵的资产之一。然而&#xff0c;随着数据价值的增加&#xff0c;数据泄露的风险也随之上升。从内部员工的无意泄露到外部黑客的恶意攻击&#xff0c;企业数据安全面临着前所未有的挑战。SDC沙盒数据防泄密解决方案&#xff0c;正是为…

从零入门AI篡改图片检测(金融场景)#Datawhale十月组队学习

1.大赛背景 在全球人工智能发展和治理广受关注的大趋势下&#xff0c;由中国图象图形学学会、蚂蚁集团、云安全联盟CSA大中华区主办&#xff0c;广泛联合学界、机构共同组织发起全球AI攻防挑战赛。本次比赛包含攻防两大赛道&#xff0c;分别聚焦大模型自身安全和大模型生成内容…

Android Compose使用LinearProgressIndicator绘制显示异常

使用依赖版本 androidx.compose.material3:material3:1.3.0-beta05 对应代码 LinearProgressIndicator(progress { 0.7f })直接使用上述代码绘制进度条时&#xff0c;最终显示效果如下&#xff1a; 问题原因 LinearProgressIndicator中gapSize属性表示进度和背景之前的空…

【文献及模型、制图分享】中国新型城镇化与绿色发展协调演进关系研究(熵值法、耦合协调模型)

文献介绍 双碳目标下&#xff0c;新型城镇化与绿色发展的协调演进对于推动中国经济高质量发展意义重大。运用熵值法、耦合协调模型等研究方法&#xff0c;分析了2005—2020年中国30个省&#xff08;自治区、直辖市&#xff09;新型城镇化与绿色发展协调演进的时空格局特征与类…

DOM中的元素获取方式、事件以及属性操作

一、WebApi介绍 1. Api的概念 API ( Application Programming Interface&#xff1a;应用程序编程接口) 是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于某软件或硬件得以访问一组程序的能力&#xff0c;而又无需访问源码&#xff0c;无需了解其内部的工作…

26K star!学习AI也不难,这个项目讲的非常全

马上就要2024年了&#xff0c;谁不想学习一下AI相关的知识呢&#xff1f;怎么开始上手一直困扰着很多初学者&#xff0c;现在网上也充斥着各种搬运的垃圾课程&#xff0c;更是让人难以选择&#xff0c;我们就是希望帮初学者避开那些垃圾内容。 今天我们推荐的开源项目是微软推…

Windows上安装Go并配置环境变量(图文步骤)

前言 1. 本文主要讲解的是在windows上安装Go语言的环境和配置环境变量&#xff1b; Go语言版本&#xff1a;1.23.2 Windows版本&#xff1a;win11&#xff08;win10通用&#xff09; 下载Go环境 下载go环境&#xff1a;Go下载官网链接(https://golang.google.cn/dl/) 等待…