阿里云OSS C++SDK在VS15编译提示无法识别外部链接GetObjectW的解决办法

阿里云OSS C++SDK在VS15编译提示无法识别外部链接GetObjectW的解决办法

  • 前言
    • OSS的安装
    • OSS在VS15编译提示无法识别外部链接GetObjectW的解决办法

前言

本人对vs的接触时间不长,所以一开始部署好OSS SDK的编译环境之后,在确认了库的链接应该没问题的情况下(就是尝试了官方提供的上传功能,可以正常把文件上传到服务器上),看到了vs的报错一直是“无法识别的外部链接…后面说的是关于GetObject这个函数的”,也懵了很久。
问了客服,得到的回应是叫我重新安装SDK再尝试,但是还是不行……
而今天也是想看看OSS代码的深层调用的时候才发现了,其实之所以编译器报错,就是因为微软的GetObject函数和OSS的GetObject函数重名了。
就算是用了namespace也是没用的。
下面讲解决办法。

OSS的安装

这个比较简单,官方文档说的比较明白,这里附上链接:

https://help.aliyun.com/document_detail/106216.html?spm=a2c4g.11186623.6.1464.5d0b2345zLH50X

OSS在VS15编译提示无法识别外部链接GetObjectW的解决办法

错误提示如下:error LNK2019: 无法解析的外部符号 "public: class AlibabaCloud::OSS::Outcome __thiscall AlibabaCloud::OSS::OssClient::GetObjectW(class AlibabaCloud::OSS::GetObjectRequest const &)const " (?GetObjectW@OssClient@OSS@AlibabaCloud@@QBE?AV?$Outcome@VOssError@OSS@AlibabaCloud@@VGetObjectResult@23@@23@ABVGetObjectRequest@23@@Z),该符号在函数 “public: int __thiscall CRecvComandDlg::doem(void)” (?doem@CRecvComandDlg@@QAEHXZ) 中被引用

原因:微软wingdi.h文件也有一个方法叫GetObject,跟OSS中的GetObject重名。

解决方法:在包含阿里云OSS头文件前取消wingdi.h的相关宏定义

如下图,就添加了3个undef语句,避免了下面调用OSS::GetObject时编译报错的问题。
阿里云OSS C++SDK在VS15编译提示无法识别外部链接GetObjectW的解决办法_第1张图片

下面就可以正常使用OSS的SDK方法了!NICE!

希望各位大佬看了有更好的解决办法的可以指点迷津,谢谢嘞

你可能感兴趣的:(C++,c++,阿里云)