阿里云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<class AlibabaCloud::OSS::OssError,class AlibabaCloud::OSS::GetObjectResult> __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的SDK方法了!NICE!
希望各位大佬看了有更好的解決辦法的可以指點迷津,謝謝嘞
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/281351.html
標籤:其他
上一篇:語音信號基本知識和處理
下一篇:Winegrape資料集下載
