c++ - 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
解决方案
该问题已在 1.6.24 中修复。
推荐阅读
- c++ - 使用 openCV 编译程序时出现 Collect2 ld 错误
- css - 高度为 100% 的 CSS 网格子元素溢出父元素
- node.js - Ng Serve 返回“对象原型可能只是一个对象或空:未定义类型错误:对象原型可能只是一个对象或空:未定义”
- perl - (Perl)从文件中读取字符串时是否可以插入变量?
- sql - 如何通过 Spring Boot JPA 执行具有 INTERVAL 子句的本机 SQL 查询?
- html - Radio Checked 元素选择 Sass
- javascript - 如何在列表视图上按下按钮时编写发送电子邮件的代码
- javascript - 如何将datatable javaScript数据导出到eccel,不导出隐藏列,但不影响隐藏响应数据?
- python - 使用 Matplotlib.Pyplot 显示非规范化图像会导致多色像素马赛克:为什么?
- apache-camel - 使用骆驼 pollEnrich 合并 xml 输出