我最近从事过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:任何指向详细教程的链接都可以。(无论如何,我无法通过谷歌搜索找到。:-()