为什么 Aws::String 没有扩展 std::string

Why is Aws::String not extending std::string

我们之前在本地构建了 aws-sdk-cpp 并围绕它设计了一个库。现在我正在升级以使用 Conan 提供的 aws-sdk-cpp 而不是本地构建的,但我从我们的库中收到错误。

我调用 AWS 函数如下,

std::string src_bucket;
DeleteObject
// ...

obj.WithBucket(src_bucket).WithDelete(std::move(del));

但我遇到这样的错误。

error: no matching function for call to 'Aws::S3::Model::DeleteObjectsRequest::WithBucket(const string&)`.

此函数调用是否更改为现在允许 std::string?有没有办法让 AWS 方法接受 std::string?

Is there a way to make AWS methods accept std::string?

是的。这些函数接受 std::string if custom memory management is disabled:

If the compile-time constant is enabled (on), the types resolve to STL types with a custom allocator connected to the AWS memory system.

If the compile-time constant is disabled (off), all Aws::* types resolve to the corresponding default std::* type.

看起来前者是你得到的,后者是你所期望的 - 也许你已经从静态链接 SDK(默认关闭)切换到动态链接 SDK(默认打开)?

在任何情况下,您都必须以某种方式在禁用自定义内存管理的情况下构建 SDK,自己使用 Aws::String 等类型,或者 .