因为实际项目需求,需要使用阿里云oss的对象存储来上传文件,在写代码操作之前,需要先安装SDK,编译你能使用的lib。
其实前后找了不少文章,但都不太细致,所以分享一下我本人使用的经验,不代表适用所有人,仅供参考。
环境是windows系统,vs2017+qt5.14(vs2015+qt5.6也尝试过,效果都一样)
请按照官方参考文档来配置:阿里云OSS C++安装
一、下载SDK
安装官方文档下载最新版的sdk包,将它解压到你电脑合适的位置。简单来说,包里有依赖的第三方dll,后面需要拷贝到我们程序的目录下。而我们需要的,是按照官方步骤,编译适合我们使用的lib文件。
二、cmake
环境下没有cmake的朋友可以先安装cmake,可以参考一下方法,亲测简单有效。
windows中cmake的安装和配置
按照第二种方法,下载源码和installer,安装文章所说的话进行配置就行了
cmake能正常用后,在第一步解压的sdk文件夹下,新建一个build文件夹,用来放后续生成的东西。
打开cmd,进入这个build文件夹,输入“cmake …”,即可在build下生成所需文件。
三、生成lib
build文件夹内生成了ALL_BUILD.vcxproj和INSTALL.vcxproj,安装官方文档,需要“以管理员身份运行VS开发人员命令提示符,运行以下命令”:
msbuild ALL_BUILD.vcxproj
msbuild INSTALL.vcxproj
前提是你安装了Visual Studio 2013及以上版本,成功后,lib目录下就会有alibabacloud-oss-cpp-sdk.lib
这里有一个问题,生成的lib是debug版本的,亲测release版本无法使用,会编译错误。如果需要release的,在msbuild的时候,要加对应的参数
msbuild ALL_BUILD.vcxproj /p:configuration=Release /t:Rebuild
msbuild INSTALL.vcxproj /p:configuration=Release /t:Rebuild
或者你不喜欢命令行编译也行,直接用vs打开build下的sln文件,切换到win32的release,编译ALL_BUILD.vcxproj就行了,效果一样。
这样,就能得到release版本的lib了
四、软件使用
(1)将源码的sdk目录拷贝到你的程序目录下(我改成了oss_sdk了,引用的时候需要注意)
(2)将源码的third_party目录拷贝到你的程序目录下,这里面主要也是lib和dll
(3)third_party目录下,选择你需要的dll,拷贝到程序运行目录下(我用的是32位,\third_party\lib\Win32,将里面的dll全部拷贝)
(4)引用库和头文件,这里我用的是qt的pro
#oss上传文件
INCLUDEPATH += $$PWD/oss_sdk/include \
$$PWD/oss_sdk/src \
$$PWD/third_party/include
win32:{
LIBS += -L$$PWD/third_party/lib/Win32 -llibcurl
LIBS += -L$$PWD/third_party/lib/Win32 -llibeay32
LIBS += -L$$PWD/third_party/lib/Win32 -lssleay32
LIBS += -L$$PWD/lib -lalibabacloud-oss-cpp-sdk
这样基本就完成了sdk的安装和配置了,下一篇将讲我封装的上传文件的代码调用。
*20240918补充
因为业务需要,需要在64位程序上使用oss,尝试原先的lib发现无法链接,所以需要变异出64位的oss库。
原先的源码包里,third_party倒是已经提供了64位的dll,所以我只需要一个lib。
这次直接用vs打开ALL_BUILD.sln,生成方式改为x64和Release(没有x64的话自己新建一个)
然后直接编译,发现编译不过,报错LNK1112:模块计算机类型x64与目标计算机类型x86冲突。于是要修改cpp-sdk的目标计算机类型,看图:
改了这里还是不行,发现还有附加选项这里,原本写的是x86,我直接手动改成x64了
运行成功(cpp-sdk-sample没有成功,不过lib已经出来了,我没有管他)
就是lib文件的路径蛮奇怪的,在build\x64\Release里面,原先32位的话,直接在lib\Release里面,和那些中间文件时分开的。我不熟悉vs,不晓得怎么配置,于是就这样吧。