我有一个错误
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)
如何修复这个错误?
此更改于 2 月 8 日引入。如果您的同事没有遇到此问题,那是因为他们尚未更新其 AWS SDK,并且您的 CI 环境也没有更新。 您应该联系您的同事并就 1) 使用哪个版本的 AWS 开发工具包以及 2) 升级到新版本的流程达成一致。 (这会发现这样的问题)
长期解决办法是通过
Aws::S3::S3Client::getAllocationTag()
来代替。
短期修复方法是使用旧版本的 SDK。