windows环境下编译aws-sdk-cpp踩坑记

news2025/1/11 5:44:37

目录

1 前言

2 第一次编译

3 第二次编译

3.1 安装配置vcpkg

3.2 升级PowerShell

3.3 升级Cmake版本

3.4 vcpkg编译aws-sdk-cpp

4  工具合集下载

5 参考文献


1 前言

在做图片、视频片段存储技术调研时,从查阅的大量资料中,了解到很多人推荐的开源MinIO,其优点简单来说易于部署和调用,支持高可靠性等,但是官方却没提供C++版本的API接口,这点对C++开发人员不友好。好在它是遵循亚马逊S3协议的,所以可以通过调用aws-sdk-cpp对MinIO访问。下边记录了笔者编译aws-sdk-cpp碰到的一些坑以及解决办法,供有需要的朋友参考,以少走弯路。

2 第一次编译

从github上下载代码GitHub - aws/aws-sdk-cpp: AWS SDK for C++,命令:

git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp

因为github服务器在国外,下载过程速度超级慢,重复下载了多次后,终于下载完代码。笔者电脑上已安装了CMake (cmake-gui3.18)和VS2022,于是打开cmake编译aws-sdk-cpp,但是横竖编译不过,看到网上有的朋友介绍cmake编译时,一句介绍就结束了,真羡慕这是怎么编译出来的,都有些怀疑自己了。

3 第二次编译

山重水复疑无路之时,在一个网友的博文里,看到类似的经历,使用CMAKE+VS的方式编译aws-sdk-cpp无果,后来改用C++第三方库管理工具vcpkg,顺利完成了编译。于是开启了笔者的二次编译之旅。

3.1 安装配置vcpkg

下载传送门:GitHub - microsoft/vcpkg: C++ Library Manager for Windows, Linux, and MacOS

git clone https://github.com/microsoft/vcpkg

由于网速的原因,同样下载很慢。下载完之后,编译下载vcpkg。网友强烈推荐使用PowerShell进行编译。命令:

./bootstrap-vcpkg.bat

 查找原因,说是要使用PowerShell7以上的版本,输入以下命令查看:

$PSVersionTable

果然系统自带的版本比较低。

3.2 升级PowerShell

下载传送门(最新版):Release v7.4.0-preview.3 Release of PowerShell · PowerShell/PowerShell · GitHub

安装后,将路径添加到系统环境变量,再次查看powershell版本:

 接着编译vcpkg,生成vcpkg.exe文件:

将vcpkg.exe的当前路径,添加到系统环境变量,这样就可以在powershell中任意路径,使用vcpkg了。

3.3 升级Cmake版本

使用vcpkg先查看一下aws-sdk-cpp概况,命令:

vcpkg search aws-sdk-cpp

提示Cmake版本太低,需要升级版本:

下载传送门:Download | CMake

将Cmake从3.18升级到3.26.3后即可。

3.4 vcpkg编译aws-sdk-cpp

接着用命令vcpkg search aws-sdk-cpp查看:

内容比较多,我们需要的是红线框中的。输入以下命令开始编译:

vcpkg install aws-sdk-cpp[core]:x86-windows
vcpkg install aws-sdk-cpp[core]:x64-windows

如果编译过程中因网络问题出错,不用理会,反复使用编译命令进行编译,直到成功为止。

在vcpkg当前目录下,会生成install目录,这个目录下已经生成了aws-sdk-cpp编译好的库文件及头文件,添加引用到项目工程,即可使用了。

4  工具合集下载

为了便于下载,笔者同时已将文中提到的中间工具及aws-cpp-sdk编译好的开发包文件,已上传到csdn,您也可以在这里进行下载

PowerShell-7.4.0-preview.3-win-x64.msi

vcpkg

aws-sdk-cpp-1.11.4(x64-windows)

5 参考文献

C++第三方库管理工具vcpkg使用教程

vcpkg+Visual Studio 2019编译aws-sdk-cpp 实现minIO文件上传下载

Visual Studio开源库集成器Vcpkg全教程--利用Vcpkg轻松集成开源第三方库

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

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

相关文章

多层网关已成过去,网关多合一成潮流,网关改造正当时丨Higress 正式发布 1.0 版本

作者:Higress 团队 01 前言 K8s 通过 Ingress / Gateway API 将网关标准化,逐步将安全网关、流量网关、微服务网关内聚,解决从单体到微服务到云原生多层网关的复杂度,合久必分,分久必合,多层网关已成过去…

第21章 JQuery DataTables对角色的渲染显示

1 Services.Customers.CustomerServiceDefaults /// <summary> /// 【1个指定用户所对应的所有角色缓存键】 /// <remarks> /// 摘要&#xff1a; /// 设定一个缓存键实例&#xff0c;用于拼接1个指定的缓存键字符串&#xff0c;该缓存键字符与角色实体所有实例…

量化多因子——描述数据(空值、重复值、异常值)

数据清洗是量化的第一步&#xff0c;也是非常关键的一步。 检查数据的空值、重复值、异常值&#xff0c;并进行描述性数据分析&#xff0c;观察数据的分布情况。 缺失值&#xff1a; return_all.info() np.where(np.isnan(return_all)) np.where(np.isinf(return_all)) 重复值&…

基础巩固(五)Android通过WebView与Js交互

文章目录 简介WebView基本使用常用方法WebView的生命周期 / 状态切换关于前进 / 后退网页清除缓存数据 常用类WebSettings类常见用法&#xff1a;设置WebView缓存 WebViewClient类WebChromeClient类 注意事项如何避免WebView内存泄露 使用案例 通过WebView使得native与Js交互An…

k8s安装部署

1、基础环境 所有机器执行以下操作 hostname ipk8s-master192.168.0.121k8s-node1192.168.0.102k8s-node2192.168.0.160 docker version&#xff1a;20.10.7 k8s相关插件version&#xff1a;1.20.9 #各个机器设置自己的域名 hostnamectl set-hostname xxxx# 将 SEL…

Java中令人惊艳的五大算法,你知道多少?

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

Golang - 选项模式 vs 构建器模式

在使用Golang创建复杂对象时&#xff0c;常用的两种模式是选项模式&#xff08;Options pattern&#xff09;和构建器模式&#xff08;Builder pattern&#xff09;。这两种模式各有优缺点&#xff0c;选择适合项目需求的模式取决于具体情况。 问题 假设我们想创建一个具有许…

【HTTP 协议】掌握 Web 的核心技术

哈喽&#xff0c;大家好~我是你们的老朋友&#xff1a;保护小周ღ 谈起 HTTP 协议&#xff08;超文本传输协议&#xff09;&#xff0c;不知道大家第一次是从什么地方了解到这个协议的呢&#xff1f;在真实的网络环境中网络协议的种类非常多&#xff0c;其中有一些耳熟能详的…

GBASE南大通用5月份公司动态一览

产品动态 5月初&#xff0c;GBASE南大通用两款新产品&#xff1a;GBase 8c V5.0和GBase 8s V8.8.5于鲲鹏开发者大会主论坛商业发行版联合发布仪式上正式发布。新版本与上一版本功能特性保持兼容&#xff0c;并在算子能力、用户级别审计、兼容性等方面全面增强&#xff0c;支持一…

最新版本 Stable Diffusion 开源 AI 绘画工具之微调模型篇

✨ 目录 &#x1f388; 模型种类&#x1f388; 变分自动编码器 / VAE&#x1f388; 美学梯度 / Aesthetic Gradients&#x1f388; 大型语言模型的低阶自适应 / LoRA&#x1f388; 超网络模型 / Hypernetwork&#x1f388; 微调模型 / LyCORIS &#x1f388; 模型种类 当你打开…

jacoco检测功能或自动化测试覆盖率

参考文档&#xff1a;http://t.csdn.cn/QqCSh http://t.csdn.cn/HonVL 目录 下载jacoco 启动jacocoagent监控被测项目 执行手工测试 生成exec文件 生成report报告 jacoco代码覆盖率报告分析 下载jacoco http://t.csdn.cn/HonVL 我下载的最新的 jacoco-0.8.10.zip 下…

虚拟化技术 — Cgroups 与 Namespaces 支撑实现的操作系统虚拟化

目录 文章目录 目录操作系统虚拟化&#xff08;容器技术&#xff09;的发展历程ChrootCgroupsCgroup SubsystemsCgroup FilesystemCgroup HierarchyCgroups 的操作规则Cgroups 的代码实现 NamespacesUTS namespacePID namespaceIPC namespaceMount namespaceNetwork namespaceU…

mysql order by 索引问题综合分析

一&#xff0c;文章1 Mysql-索引失效 order by优化_orderby索引失效_zyk1.的博客-CSDN博客 总结&#xff1a; 0&#xff0c;索引 与 查询条件 与 排序字段关系&#xff0c;Using filesort出现场景 1.联合索引&#xff0c;最左匹配原则&#xff0c;不仅查询条件需要遵循&…

vivado FIFO的Standard 和 FWFT模式

vivado FIFO的Standard 和 FWFT模式 Standard 模式读操作 对于标准 FIFO 读取操作&#xff0c;在断言读有效后&#xff0c;如果 FIFO 非空&#xff0c;存储在FIFO中的下一个数据被驱动到输出总线&#xff08;dout&#xff09;上和VALID标志有效。 下图显示标准模式下的读数据…

ChatGPT介绍与使用场景

ChatGPT是OpenAI开发的一款基于GPT-3和GPT-4的人工智能聊天机器人。“GPT"代表的是"Generative Pre-trained Transformer”&#xff0c;这是一种深度学习技术&#xff0c;使用人工神经网络来生成类似人类的文本。 ChatGPT能够处理各种对话任务&#xff0c;包括回答问…

教您如何快速自助搭建一个元宇宙场景

【导语】 在数字化时代&#xff0c;营销方式正经历着巨大的变革。而在这场变革的浪潮中&#xff0c;元宇宙编辑器凭借其独特的元宇宙展厅解决方案&#xff0c;为企业和个人提供了快速、简便的自助搭建元宇宙场景的机会。 今天&#xff0c;让我们一起走进元宇宙编辑器的世界&…

如何将Windows 7系统镜像部署到不同的硬件计算机?

案例&#xff1a;将Windows 7系统镜像恢复到另一台电脑 “我有一台运行 Windows 7 的电脑&#xff0c;我已经创建了一个系统镜像并希望将其加载到另一台电脑上。但是&#xff0c;当我运行恢复控制台时&#xff0c;我不断收到错误消息。这让我想知道是否可以创建 Windows 7 系…

前端面试技巧?第一手面试真题!

面试有哪些套路和技巧&#xff1f; 第一次去面试&#xff0c;该注意什么&#xff1f; 怎么说话能打动面试官&#xff0c;成功入职&#xff1f; 当你褪去青涩&#xff0c;将头发梳成大人模样走向面试之路时&#xff0c;你们的搜索记录和行为早已暴露了自己内心状态&#xff1a…

数据结构和算法的基本概念

数据结构概念 1.数据&#xff1a;所有能输入计算机且能被计算机处理的符号总称 2.数据元素&#xff1a;是数据的基本单位&#xff0c;表示数据集合中的一个个体。 3 .数据项&#xff1a;数据元素中有独立含义的最小单位。 数据结构&#xff1a;相互之间存在一定关系的数据元素的…

Layui时间选择设置只能选择整点半点,并隐藏秒钟部分

文章目录 1.整点半点选择2.隐藏秒选择部分3.默认值处理3.1 操作done函数3.2 操作ready函数 1.整点半点选择 处理思路&#xff1a;通过循环将使用不到的时间点去除掉&#xff0c;关键代码位于ready函数 //选择起止时间 layui.laydate.render({elem: .laydate-times,type: &quo…