36869


お世話になります。  
AWS SDK for C++ を使ってS3にファイルをアップロードする処理を書ています。

・コード

[code]

        bool hoge()
        {
       　　 Aws::Client::ClientConfiguration config;
        　　config.region = "ap-northeast-1";
    
       　　 Aws::S3::S3Client　S3Client(Aws::Auth::AWSCredentials
               ("accesskey_id","secret_key", "session_token"), config);
    
        　　Aws::S3::Model::PutObjectRequest objectRequest;
        　　objectRequest.WithBucket("bucket_key").WithKey("fileName");
    
        　　objectRequest.SetBody(fileData);
    
            auto putObjectOutcome = S3Client.PutObject(objectRequest);
    　　　　　　 以下省略
    }
    
[/code]

コンパイルは通るのですが、実行した際に上のコードのAws::S3::S3Client S3Client(略)
というコンストラクタに差し掛かったところでエラーが出ます。

・エラー内容

[code]

    初回例外が 0x00007FFCF4A7E48C (aws-cpp-sdk-core.dll) で発生しました (プロジェクト名.exe 内): 0xC0000005: 場所 0x0000000000000000 の読み取り中にアクセス違反が発生しました。
    
[/code]

gtestを使ってテストを行っているのですが、そのときのエラーとしては

[code]

    unknown file: error : SEH exception with code 0xc0000005 thrown in the test body.
    
[/code]

が出てFAILEDとなります。

どうやらよくわからないメモリを参照しているようなのですが、原因が不明です。

呼び出し履歴を見るとcrtexe.cのCRTStartup() (626行目)からさらに多く呼び出しが  
行われ、最終的に

[code]

    testing::internal::HandleSehExceptionsInMethodIfSupported<class testing::Test,void>(class testing::Test *,void ( testing::Test::*)(void),char const *)  
    
[/code]

というところで処理が止まります。

調べてみても良い解決策が見つからないため、こちらで質問させていただきます。  
何かありましたら補足致します。よろしくお願い致します。


CC BY-SA 3.0
2017-07-31T10:08:02.223
36818
2017-08-02T05:02:40.033
2017-07-31T11:47:06.020
19110
24103
question
c++ aws amazon-s3
AWS SDK for C++ のAws::S3::S3Clientで発生するSEH Exceptionについて


Aws SDKの使用開始・使用終了処理を呼び出していなかったため起こったエラーでした。  
使用開始

[code]

    Aws::SDKOptions options;
    Aws::InitAPI(options);
    
[/code]

使用終了

[code]

    Aws::ShutdownAPI(options);
    
[/code]

これを追加することで、正常にアップロードが可能となりました。非常に単純な見逃しでした...  
ありがとうございました。


CC BY-SA 3.0
2017-08-02T05:02:40.033
36869
2017-08-02T05:02:40.033
24103
36818
answer