ALLOCATION_TAG 不是成员“Aws::S3::S3Client”

问题描述 投票:0回答:1

我有一个错误

ALLOCATION_TAG 不是成员“Aws::S3::S3Client”。

对于此代码

#include <aws/s3/S3Client.h>
#include <aws/s3/model/PutObjectRequest.h>
#include <aws/s3/model/ListObjectsV2Request.h>
#include <aws/s3/model/GetObjectRequest.h>
#include <aws/s3/model/HeadObjectRequest.h>
#include <aws/core/auth/AWSCredentials.h>
...

Aws::S3::S3Client s3Client(awsCredentials,
                               Aws::MakeShared<Aws::S3::S3EndpointProvider>(Aws::S3::S3Client::ALLOCATION_TAG),
                               awsConfig);

这段代码对我的同事来说工作得很好。我猜问题出在ASW SDK安装过程上

我的行动: 1 下载 Visual Studio 用于 C++ 开发 2 打开VS2022的开发人员命令提示符 3 运行以下命令

git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp
mkdir sdk_build
cd sdk_build
cmake ..\aws-sdk-cpp -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH="C:\\Program Files\\aws-cpp-sdk-all"
cmake --build . --config=Release
cmake --install . --config=Release

我正在重新启动电脑,但没有帮助。 我的Cmake

cmake_minimum_required(VERSION 3.23)
project(Launcher)

set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_STANDARD 14)
set(AWSSDK_ROOT "C://Program Files (x86)//aws-cpp-sdk-all")


find_package(Qt6 COMPONENTS Widgets Concurrent REQUIRED)
find_package(AWSSDK REQUIRED COMPONENTS s3 cognito-idp cognito-identity)
add_compile_definitions(AWS_NO_STATIC_IMPL)

add_executable(${PROJECT_NAME}
        ...
        main.cpp)

target_include_directories(${PROJECT_NAME} PRIVATE ${AWSSDK_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} PRIVATE ${AWSSDK_LIBRARIES})
target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Widgets Qt6::Concurrent)

如何修复这个错误?

c++ amazon-web-services aws-sdk
1个回答
0
投票

此更改于 2 月 8 日引入。如果您的同事没有遇到此问题,那是因为他们尚未更新其 AWS SDK,并且您的 CI 环境也没有更新。 您应该联系您的同事并就 1) 使用哪个版本的 AWS 开发工具包以及 2) 升级到新版本的流程达成一致。 (这会发现这样的问题)

长期解决办法是通过

Aws::S3::S3Client::getAllocationTag()
来代替。 短期修复方法是使用旧版本的 SDK。

© www.soinside.com 2019 - 2024. All rights reserved.