首页 > 解决方案 > aws-sdk-cpp 1.4 和 1.5/1.6 之间的静态链接差异导致不匹配错误?

问题描述

我的核心和 S3 库以及 x64 Windows 的静态链接存在问题,我可以在 Visual Studio 2017 v15.8.4 的小型控制台应用程序中重现这些问题。

使用从 NuGet 获得的 1.4 库(下面的确切版本),我的程序的 x86 和 x64 版本都可以正常链接,AWSSDKCPP-Core 和 AWSSDKCPP-S3 的链接设置为静态。如果我更新到 1.5 或 1.6,完全相同的项目在 x86 中可以正常链接,但在 x64 中会出现链接错误:

Searching libraries
Searching C:\Users\Jeff\Documents\Visual Studio 2017\Projects\ConsoleApplication20\packages\AWSSDKCPP-S3.1.6.20060301.11\build\native\..\..\\build\native\lib\x64\Debug\v141\static\aws-cpp-sdk-s3.lib:
Found "public: __cdecl Aws::S3::S3Client::S3Client(class Aws::Auth::AWSCredentials const &,struct Aws::Client::ClientConfiguration const &,enum Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy,bool)" (??0S3Client@S3@Aws@@QEAA@AEBVAWSCredentials@Auth@2@AEBUClientConfiguration@Client@2@W4PayloadSigningPolicy@AWSAuthV4Signer@62@_N@Z)
Referenced in ConsoleApplication20.obj
Loaded aws-cpp-sdk-s3.lib(ub_S3.obj)
aws-cpp-sdk-s3.lib(ub_S3.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MTd_StaticDebug' in ConsoleApplication20.obj

我不知道为什么当我将 aws-cpp-sdk-s3.lib 的 RuntimeLibrary 值设置为静态并且它在以前的版本中链接(以及在具有相同版本的 x86 中)时,它认为它是动态的。1.5/1.6 中的 x64 静态库是否具有它们不应该具有的依赖关系?有解决方法吗?

版本:AWSSDKCPP-Core 1.4.93 / 1.6.11 AWSSDKCPP-S3 1.4.20060301.93 / 1.6.20060301.11

标签: c++windowsamazon-s3visual-studio-2017aws-sdk-cpp

解决方案


该问题已在 1.6.24 中修复。


推荐阅读