如何在aws cpp sdk中处理内存?

时间:2016-08-21 11:20:28

标签: c++ amazon-web-services amazon-s3

我最近从事过AWS服务的aws-cpp-sdk。 但不幸的是,我无法理解如何处理内存,因为互联网上没有足够的教程或示例。

我尝试的内容如下:
1.使用CMake将aws-cpp-sdk构建为Windows x64的64位共享dll(完全是win10,vs 2015)。
2.在win32控制台应用程序中使用该库进行测试 但是使用他们的SDK时很复杂 首先附上我的代码

def tail[A](xs: List[A]): List[A] = xs match {
    case Nil => Nil
    case head :: xxs => xxs
}

问题在于,当我将PutObjectRequest 请求传递给PutObject函数时,请求的变量不会准确传递。
详细地说,我在S3Client.cpp文件中的PutObject函数中放置了“XXXXXXX”的存储桶名称(空字符串)。 附上PutObject函数。

#include "stdafx.h"
#include <aws\s3\S3Client.h>
#include <aws\core\Aws.h>
#include <aws\s3\model\PutObjectRequest.h>

using namespace Aws;
using namespace Aws::S3;
using namespace Aws::S3::Model;

static const char* ALLOCATION_TAG = "memory";
static const char* S3_BUCKET_NAME = "XXXXXXXX";
static const char* S3_KEY = "Hello";

int main()
{
    Aws::SDKOptions  options;
    Aws::InitAPI(options);
    Client::ClientConfiguration config;
    auto mS3Client = Aws::MakeShared<Aws::S3::S3Client>(ALLOCATION_TAG, config);
    auto requestStream = Aws::MakeShared<Aws::StringStream>("s3-sample");
    *requestStream << "Hello World!";
    Model::PutObjectRequest request;
    request.WithKey(S3_KEY).WithBucket(S3_BUCKET_NAME);
    request.SetBody(requestStream);
    auto outcome = mS3Client->PutObject(request);
    bool bRet = false;
    if (outcome.IsSuccess()) {
        bRet = true;
        std::cout << "Put object succeeded" << std::endl;
    }
    else {
        bRet = false;
        std::cout << "Error while putting Object " << outcome.GetError().GetExceptionName() <<
            " " << outcome.GetError().GetMessage() << std::endl;
    }
    Aws::ShutdownAPI(options);
    return 0;
}

我不确定为什么Bucket Name的值没有正确传递(也许这是一个与内存相关的问题,我认为)。
请帮助我在此代码中处理内存分配的内容和方式。 希望有很好的解决方案 PS:任何指向详细教程的链接都可以。(无论如何,我无法通过谷歌搜索找到。:-()

0 个答案:

没有答案