当前位置: 首页 > news >正文

windows msvc2017 x64编译AWS SDK CPP库

在本文中,我们将介绍如何编译AWS SDK C++库,以便在您的项目中使用。AWS SDK C++库提供了与Amazon Web Services交互的接口,允许您在C++应用程序中使用AWS服务。

一、准备工作

在开始编译AWS SDK C++库之前,请确保您的系统已经安装了以下依赖项:
CMake(版本3.13或更高版本)
支持C++11的编译器(我是使用的是MSVC 2017 64位)

二、下载AWS SDK C++源代码

首先,您需要从GitHub上的AWS SDK C++存储库下载源代码。您可以通过以下命令克隆存储库:

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

三、配置编译环境

接下来,您需要使用CMake来配置编译环境。这将生成适用于您的系统的构建文件。您可以通过以下命令来配置编译环境:

mkdir <BUILD_DIR>
cd <BUILD_DIR>
# 编译Release版本
cmake ..\aws-sdk-cpp -G "Visual Studio 15 2017 Win64" -DCMAKE_BUILD_TYPE=Release -DBUILD_ONLY="s3"
# 开始编译
cmake --build . --config=Release
# 安装到指定目录,需要管理员权限
cmake --install . --config=Release

cmake --install 会把库文件安装到 C:\Program Files\aws-cpp-sdk-all 目录

四、编译测试代码验证

4.1 创建hello_s3.cpp文件

#include <aws/core/Aws.h>
#include <aws/s3/S3Client.h>
#include <iostream>
#include <aws/core/auth/AWSCredentialsProviderChain.h>
using namespace Aws;
using namespace Aws::Auth;/**  A "Hello S3" starter application which initializes an Amazon Simple Storage Service (Amazon S3) client*  and lists the Amazon S3 buckets in the selected region.**  main function**  Usage: 'hello_s3'**/int main(int argc, char **argv) {Aws::SDKOptions options;// Optionally change the log level for debugging.
//   options.loggingOptions.logLevel = Utils::Logging::LogLevel::Debug;Aws::InitAPI(options); // Should only be called once.int result = 0;{Aws::Client::ClientConfiguration clientConfig;// Optional: Set to the AWS Region (overrides config file).// clientConfig.region = "us-east-1";// You don't normally have to test that you are authenticated. But the S3 service permits anonymous requests, thus the s3Client will return "success" and 0 buckets even if you are unauthenticated, which can be confusing to a new user. auto provider = Aws::MakeShared<DefaultAWSCredentialsProviderChain>("alloc-tag");auto creds = provider->GetAWSCredentials();if (creds.IsEmpty()) {std::cerr << "Failed authentication" << std::endl;}Aws::S3::S3Client s3Client(clientConfig);auto outcome = s3Client.ListBuckets();if (!outcome.IsSuccess()) {std::cerr << "Failed with error: " << outcome.GetError() << std::endl;result = 1;} else {std::cout << "Found " << outcome.GetResult().GetBuckets().size()<< " buckets\n";for (auto &bucket: outcome.GetResult().GetBuckets()) {std::cout << bucket.GetName() << std::endl;}}}Aws::ShutdownAPI(options); // Should only be called once.return result;
}

4.2 创建CmakeLists.txt

# Set the minimum required version of CMake for this project.
cmake_minimum_required(VERSION 3.13)# Set the AWS service components used by this project.
set(SERVICE_COMPONENTS s3)# Set this project's name.
project("hello_s3")# Set the C++ standard to use to build this target.
# At least C++ 11 is required for the AWS SDK for C++.
set(CMAKE_CXX_STANDARD 11)# Use the MSVC variable to determine if this is a Windows build.
set(WINDOWS_BUILD ${MSVC})if (WINDOWS_BUILD) # Set the location where CMake can find the installed libraries for the AWS SDK.string(REPLACE ";" "/aws-cpp-sdk-all;" SYSTEM_MODULE_PATH "${CMAKE_SYSTEM_PREFIX_PATH}/aws-cpp-sdk-all")list(APPEND CMAKE_PREFIX_PATH ${SYSTEM_MODULE_PATH})
endif ()# Find the AWS SDK for C++ package.
find_package(AWSSDK REQUIRED COMPONENTS ${SERVICE_COMPONENTS})if (WINDOWS_BUILD AND AWSSDK_INSTALL_AS_SHARED_LIBS)# Copy relevant AWS SDK for C++ libraries into the current binary directory for running and debugging.# set(BIN_SUB_DIR "/Debug") # if you are building from the command line you may need to uncomment this# and set the proper subdirectory to the executables' location.AWSSDK_CPY_DYN_LIBS(SERVICE_COMPONENTS "" ${CMAKE_CURRENT_BINARY_DIR}${BIN_SUB_DIR})
endif ()add_executable(${PROJECT_NAME}hello_s3.cpp)target_link_libraries(${PROJECT_NAME}${AWSSDK_LINK_LIBRARIES})

4.3 使用cmake构建

mkdir my_project_build
cd my_project_build
cmake ../# 然后运行hello_s3
./hello_s3

hello_s3会打印出所有bucket名字,前提是已经配置了AWS的凭证。

在这里插入图片描述

相关文章:

windows msvc2017 x64编译AWS SDK CPP库

在本文中&#xff0c;我们将介绍如何编译AWS SDK C库&#xff0c;以便在您的项目中使用。AWS SDK C库提供了与Amazon Web Services交互的接口&#xff0c;允许您在C应用程序中使用AWS服务。 一、准备工作 在开始编译AWS SDK C库之前&#xff0c;请确保您的系统已经安装了以下…...

铜业机器人剥片 - SNK施努卡

SNK施努卡有色行业电解车间铜业机器人剥片 铜业机器人剥片技术是针对传统人工剥片效率低下、工作环境恶劣及生产质量不稳定的痛点而发展起来的自动化解决方案。 面临人工剥片的诸多挑战&#xff0c;包括低效率、工作环境差、人员流动大以及产品质量控制不精确等问题。 人工剥片…...

非接触式竖向位移、水平位移视频实时在线监测的设备分类及选型

前言 视觉是人工智能正在快速发展的一个分支&#xff0c;简单说来&#xff0c;机器视觉就是用机器代替人眼来做测量和判断。在结构健康自动化监测方面&#xff0c;机器视觉采用光学图像结合智能算法和物联网技术&#xff0c;利用先进的智能靶标识别及亚像素处理等技术&#xff…...

Svelte 5 正式发布:新一代前端框架!

10 月 22 日&#xff0c;Svelte 5 正式发布&#xff01;该版本带来的更新主要包括&#xff1a; 重写框架&#xff1a;Svelte 5 是从头开始重写的&#xff0c;使得应用更快、更小、更可靠&#xff0c;并且代码更一致和符合习惯。 向后兼容&#xff1a;Svelte 5 几乎完全向后兼容…...

85.【C语言】数据结构之顺序表的中间插入和删除及遍历查找

目录 3.操作顺序表 1.分析中间插入函数 函数的参数 代码示例 图片分析 main.c部分改为 在SeqList.h添加SLInsert函数的声明 运行结果 2.分析中间删除函数 函数的参数 代码示例 图片分析 main.c部分改为 在SeqList.h添加SLErase函数的声明 运行结果 承接84.【C语…...

触觉智能Purple Pi OH鸿蒙开发板成功适配OpenHarmony5.0 Release,开启新征程!

10月22日&#xff0c;触觉智能Purple Pi OH鸿蒙开发板迎来了重大系统版本升级&#xff0c;成功适配OpenHarmony5.0 Release&#xff0c;为嵌入式开发者和科技爱好者们带来了全新的机遇与挑战&#xff01; 触觉智能 Purple Pi OH 开发板一直以来都以其高品质和超高性价比而著称。…...

分布式解决方案---分布式ID

目录 是什么 特点 全局唯一 高并发 高可用 怎么做 实现方案 是什么 分布式ID是指在分布式系统中生成的唯一标识符。由于分布式系统的特点&#xff0c;多个节点可能会同时生成ID&#xff0c;因此需要确保每个ID在整个系统中是唯一的。 重点就是唯一性&#xff01;&#x…...

httpd服务

文章目录 1、搭建一个网络yum源2、基于域名访问的虚拟主机3、基于端口来访问域名4、搭建个人网站5、加密访问显示自定义网页内容 1、搭建一个网络yum源 [roottest01 conf.d]# cat repo.conf <virtualhost *:80>documentroot /var/www/html/ServerName 10.104.43.154ali…...

Linux系统安装Redis详细操作步骤(二进制发布包安装方式)

安装方式介绍 在Linux系统中&#xff0c;安装软件的方式主要有四种&#xff0c;这四种安装方式的特点如下&#xff1a; 安装方式特点二进制发布包安装软件已经针对具体平台编译打包发布&#xff0c;只要解压&#xff0c;修改配置即可rpm安装软件已经按照redhat的包管理规范进…...

Jenkins和Gitlab整合构建CI/CD流水线

配置环境 虚拟机建议4G起步 192.168.58.199 192.168.58.200 部署Jenkins 部署Jenkins参考这篇文章&#xff1a;Jenkins安装部署_connecting to pkg.jenkins.io (pkg.jenkins.io)|151.-CSDN博客 安装完毕之后根据下图操作 选择git&#xff0c;添加git仓库克隆url&#xff0c;选…...

14 C语言中的关键字

C语言中的关键字 在C语言中&#xff0c;关键字是一些预定义的单词&#xff0c;它们具有特殊的意义和用途。这些关键字不能用作标识符&#xff0c;比如变量名、函数名等&#xff0c;因为它们被保留用于特定的语言结构和操作。 关键字的分类 C语言的关键字可以分为几个主要类别…...

(11)(2.1.7) FETtec OneWire ESCs(一)

文章目录 前言 1 去哪里买 2 连接 3 组态 前言 &#xff01;Note 此功能在固件版本 4.1.1 及更高版本上可用。 OneWire 是 FETtec 的 ESC 双向通信协议(ESC bi-directional communication protocol)。 FETtec OneWire ESC 的遥测信息被发送回自动驾驶仪&#xff1a; 电…...

Python 异步编程:使用 `asyncio.to_thread` 和 `asyncio.Queue` 处理任务队列

Python 异步编程&#xff1a;使用 asyncio.to_thread 和 asyncio.Queue 处理任务队列 1. 什么是 asyncio.to_thread&#xff1f;2. 什么是 asyncio.Queue&#xff1f;3. 示例代码&#xff1a;使用 asyncio.to_thread 和 asyncio.Queue 处理任务队列示例代码代码解释运行结果 4.…...

【问题解决】Flink在linux上运行成功但是无法访问webUI界面

一&#xff0c;问题 在搭建Flink的时候&#xff0c;已经在linux服务器上运行了./start-cluster.sh&#xff0c; 而且日志显示已经成功了。 服务器上也没有开启防火墙 正常来说应该能通过ip:8081来访问(8081是Flink WebUI的默认端口)&#xff0c;但是访问的时候&#xff0c;显示…...

【问题解决】pnpm : 无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

今天配置完poetry环境变量之后pnpm不能用了 具体报错 pnpm : 无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果包括路径&#xff0c;请确保路径正确&#xff0c;然后再试一次。 所在位置 行:1 字符: 1pnpm run dev~~~~ Ca…...

微信网页授权回调地址放多个参数的方法

https://open.weixin.qq.com/connect/oauth2/authorize?appidAPPID&redirect_uriREDIRECT_URI&response_typecode&scopeSCOPE&stateSTATE#wechat_redirect 跳转后地址 redirect_uri/?codeCODE&stateSTATE。 redirect_uri如果不进行urlencode编码, 跳转后…...

相机工作距离计算

镜头 基础参数 焦距 ​ 例如&#xff0c;使用1英寸靶面(12.8mm x 9.6mm)的相机&#xff0c;工作距离WD是300mm&#xff0c;视野FOV的高度是120mm&#xff0c;那么光学放大倍率&#x1d6fd; 9.6&#x1d45a;&#x1d45a;/120&#x1d45a;&#x1d45a;0.08 &#xff0c;…...

Pandas模块之垂直或水平交错条形图

目录 df.plot() 函数Pandas模块之垂直条形图Pandas模块之水平交错条形图 df.plot() 函数 df.plot() 是 Pandas 中的一个函数&#xff0c;用于绘制数据框中的数据。它是基于 Matplotlib 库构建的&#xff0c;可以轻松地创建各种类型的图表&#xff0c;包括折线图、柱状图、散点…...

ArcGIS必会的选择要素方法(AND、OR、R、IN等)位置选择等

今天来看看ArcGIS中的几个选择的重要使用方法 1、常规选择、 2、模糊查询、 3、组合复合条件查询&#xff08;AND、OR、IN&#xff09;&#xff0c; 4、空值NULL查询 5、位置选择 推荐学习&#xff1a; 以梦为马&#xff0c;超过万名学员学习ArcGIS入门到实战的应用课程…...

快速创建一个微信小程序,详细步骤以及示范程序代码

创建一个微信小程序涉及前端和后端的搭建与联调。以下是一个快速创建微信小程序的详细步骤以及示范程序代码。 一、注册微信小程序账号 前往微信公众平台&#xff0c;注册一个小程序账号并完成相关设置。注册完成后&#xff0c;获取小程序的AppID&#xff0c;这是后续开发过程…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...

面试高频问题

文章目录 &#x1f680; 消息队列核心技术揭秘&#xff1a;从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"&#xff1f;性能背后的秘密1.1 顺序写入与零拷贝&#xff1a;性能的双引擎1.2 分区并行&#xff1a;数据的"八车道高速公路"1.3 页缓存与批量处理…...