【问题标题】:Error while uploading file to S3 aws sdk cpp将文件上传到 S3 aws sdk cpp 时出错
【发布时间】:2020-05-07 08:10:54
【问题描述】:

所以我正在尝试使用 aws sdk cpp 将本地文件上传到 aws s3。 这是我从问题here

中获取的示例代码
#include <aws/core/Aws.h>
#include <aws/s3/S3Client.h>
#include <aws/core/utils/HashingUtils.h>
#include <aws/s3/model/PutObjectRequest.h>
#include <iostream>
#include <fstream>

using namespace Aws::S3::Model;
using namespace std;
using namespace Aws::Utils;

 static const char* KEY = "try.txt";
 static const char* BUCKET = "bucket-name";

 int main()
 {
Aws::SDKOptions options;
Aws::InitAPI(options);

Aws::Client::ClientConfiguration myConf;
myConf.region = Aws::Region::US_EAST_2;
Aws::S3::S3Client s3_client(myConf);

const Aws::String bucket_name = BUCKET;
const Aws::String key_name = KEY;
const Aws::String dir_name = "C:/Users/linda.naoui/source/repos/Upload s3";

std::cout << "Uploading " << key_name << " to S3 bucket: " <<
    bucket_name << std::endl;



Aws::S3::Model::PutObjectRequest object_request;
object_request.WithBucket(bucket_name).WithKey(key_name);

auto input_data = Aws::MakeShared<Aws::FStream>(key_name.c_str(), dir_name.c_str(), std::ios_base::in);

object_request.SetBody(input_data);

auto put_object_outcome = s3_client.PutObject(object_request);

if (put_object_outcome.IsSuccess()) {
    std::cout << "Done!" << std::endl;
}
else {
    std::cout << "PutObject error: " <<
        put_object_outcome.GetError().GetExceptionName() << " " <<
        put_object_outcome.GetError().GetMessage() << std::endl;
}

Aws::ShutdownAPI(options);

return 0;
  }

我有很多与 dll 导入相关的类似错误,我使用 Nuget 包安装了 aws s3 sdk 和 aws sdk 核心,我目前使用的是 Visual Studio 2019。

严重性代码描述项目文件行抑制状态 在函数“公共:__thiscall Aws::Utils::Outcome >::~Outcome >(void)”(??1?$Outcome@VPutObjectResult@Model@S3@Aws@@V?$AWSError@W4S3Errors@S3@Aws@ @@Client@4@@Utils@Aws@@QAE@XZ) 上传 s3 C:\Users\linda.naoui\source\repos\Upload s3\Upload s3\S3.obj 1

严重性代码描述项目文件行抑制状态 函数 _main Upload s3 C:\用户\linda.naoui\source\repos\Upload s3\Upload s3\S3.obj 1

我不确定问题是否是因为链接窗口是空的

【问题讨论】:

  • 出现链接错误时,最好也显示链接库的方式,
  • 我不明白你的意思,我用nuget安装sdk应该自动链接吧?
  • 如果改为静态链接会怎样?
  • 好的,现在我不再有 dll 错误,但我有 LNK2001 未解析的外部符号“public: __cdecl Aws::S3::Model::PutObjectRequest::PutObjectRequest(void)” (??0PutObjectRequest @Model@S3@Aws@@QEAA@XZ) Upload s3 C:\Users\linda.naoui\source\repos\Upload s3\Upload s3\S3.obj 1 它们都以未解析的外部符号开头
  • 这个答案有帮助吗? stackoverflow.com/questions/37411546/…

标签: c++ amazon-web-services amazon-s3 visual-studio-2019 aws-sdk-cpp


【解决方案1】:

我通过卸载 Visual Studio 2019 并改用 Visual Studio 2017 解决了这个问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-10
    • 2014-05-27
    • 2020-08-11
    • 2019-02-20
    • 2019-12-06
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    相关资源
    最近更新 更多