You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio中AWS C++ SDK出现GetObjectW未解析外部符号问题

AWS C++ SDK链接错误:GetObject被解析为GetObjectW的问题解决

问题原因

这是Windows平台下字符集不匹配导致的符号解析错误:

  • AWS C++ SDK在Windows上会根据项目的字符集设置,通过预处理器宏自动切换API的窄字符/宽字符版本。当项目启用Unicode字符集(Visual Studio默认设置)时,头文件中的GetObject会被替换为GetObjectW(宽字符版本)。
  • 但你通过vcpkg安装的AWS SDK默认是用多字节字符集编译的,库文件中实际导出的是GetObject符号,导致链接器找不到被替换后的GetObjectW符号。

解决方法

方法1:统一项目与SDK的字符集设置

  • 打开Visual Studio项目属性,导航到配置属性 -> 常规,找到字符集选项,将其修改为多字节字符集,与vcpkg编译SDK的默认字符集保持一致。
  • 注意:修改后需检查项目中其他依赖字符集的代码(如Windows原生API调用)是否需要适配调整。

方法2:强制SDK使用窄字符API

  • 在包含AWS SDK头文件之前,添加宏定义AWS_NO_WCHAR,禁用SDK的字符集自动替换逻辑,强制使用窄字符版本的GetObject:
    #define AWS_NO_WCHAR
    #include <aws/s3/S3Client.h>
    
  • 此方法无需修改项目全局字符集,适合无法调整字符集的场景。

方法3:重新编译Unicode版本的SDK

如果项目必须使用Unicode字符集,可以通过vcpkg重新编译AWS SDK并启用Unicode支持:

vcpkg install aws-cpp-sdk-s3:x64-windows --triplet x64-windows --cmake-args -DAWS_UNICODE=ON
  • 注意:重新编译耗时较长,需确保vcpkg环境配置正常,且编译完成后要确保项目链接的是新编译的Unicode版本库。

内容的提问来源于stack exchange,提问作者devx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 21:46:07