在windows下使用Qt连接minio

minio对于其他语言支持较好,java可以通过maven导入依赖,js可以通过npm下载依赖包,C++在官网也有了说明,貌似可以通过vcpkg install minio-cpp来实现,这种方法以后在使用Linux系统后,会尝试一下。
minio Linux SDK
在这里插入图片描述
由于当前系统为windows,打算在windows上,完成一个Qt操作minio的测试,查看资料后,minio支持亚马逊S3协议,大家都使用vcpkg下载aws-sdk-cpp,完成对minio的操作。
我也是首先安装了CMake,构建时报错,又安装了VS2015,后面发现vs版本过低,在安装亚马逊SDK时提示错误,又重新安装了VS2019。

下载vcpkg

clone vcpkg

https://github.com/microsoft/vcpkg.git

编译构建vcpkg

./bootstrap-vcpkg.bat

在这里插入图片描述
生成vcpkg.exe
在这里插入图片描述

下载亚马逊SDK

使用vcpkg下载亚马逊SDK,这里使用VS2015安装的话会报错Command failed: ninja/1.10.2-windows/ninja.exe -v什么什么的,后面换了VS2019后顺利安装成功。

 ./vcpkg.exe search aws-sdk-cpp
 ./vcpkg.exe install aws-sdk-cpp[s3]:x64-windows
 ./vcpkg.exe install aws-sdk-cpp[core]:x64-windows

这里有博主推荐使用PowerShell7,在github上下一个,安装

在这里插入图片描述

在vcpkg文件夹installed中会生成下载后的头文件和库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

新建QT工程

新建一个widget的空工程,将编译好的文件夹全部拷贝到工程下即可
在这里插入图片描述
在pro中引用lib库和头文件

INCLUDEPATH += $$PWD/. $$PWD/x64-windows/include
DEPENDPATH += $$PWD/.


win32: LIBS += -L$$PWD/x64-windows/lib/ -laws-c-auth -laws-c-cal\
-laws-c-common -laws-c-compression -laws-c-event-stream -laws-checksums -laws-c-http -laws-c-io\
-laws-c-mqtt -laws-cpp-sdk-core -laws-crt-cpp -laws-c-s3 -laws-c-sdkutils -lzlib \
-laws-cpp-sdk-core\
-laws-cpp-sdk-dynamodb\
-laws-cpp-sdk-kinesis\
-laws-cpp-sdk-s3


INCLUDEPATH += $$PWD/x64-windows/lib
DEPENDPATH += $$PWD/x64-windows/lib

win32:!win32-g++: PRE_TARGETDEPS += $$PWD/x64-windows/lib/aws-c-auth.lib\
$$PWD/x64-windows/lib/aws-c-cal.lib\
$$PWD/x64-windows/lib/aws-c-common.lib\
$$PWD/x64-windows/lib/aws-c-compression.lib\
$$PWD/x64-windows/lib/aws-c-event-stream.lib\
$$PWD/x64-windows/lib/aws-checksums.lib\
$$PWD/x64-windows/lib/aws-c-http.lib\
$$PWD/x64-windows/lib/aws-c-io.lib\
$$PWD/x64-windows/lib/aws-c-mqtt.lib\
$$PWD/x64-windows/lib/aws-cpp-sdk-core.lib\
$$PWD/x64-windows/lib/aws-crt-cpp.lib\
$$PWD/x64-windows/lib/aws-c-s3.lib\
$$PWD/x64-windows/lib/aws-c-sdkutils.lib\
$$PWD/x64-windows/lib/fmt.lib\
$$PWD/x64-windows/lib/zlib.lib\
$$PWD/x64-windows/lib/aws-cpp-sdk-core.lib\
$$PWD/x64-windows/lib/aws-cpp-sdk-dynamodb.lib\
$$PWD/x64-windows/lib/aws-cpp-sdk-kinesis.lib\
$$PWD/x64-windows/lib/aws-cpp-sdk-s3.lib
//mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <iostream>
#include <fstream>

#include "aws\s3\S3Client.h"
#include "aws\core\Aws.h"
#include "aws\core\auth\AWSCredentialsProvider.h"

using namespace std;
using namespace Aws::S3;
using namespace Aws::S3::Model;

#include "aws/s3/model/PutObjectRequest.h"
#include "aws/s3/model/GetObjectRequest.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
        // 初始化
        Aws::SDKOptions options;
        options.loggingOptions.logLevel = Aws::Utils::Logging::LogLevel::Debug;
        Aws::InitAPI(options);

        Aws::Client::ClientConfiguration cfg;
        cfg.endpointOverride = "127.0.0.1:9000";
        cfg.scheme = Aws::Http::Scheme::HTTP;
        cfg.verifySSL = false;

        Aws::Auth::AWSCredentials cred("lisy", "12345678");


        Aws::S3::S3Client client(cred, cfg, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Always, false,
Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION::NOT_SET);

        auto response = client.ListBuckets();

        if (response.IsSuccess()) {
            auto buckets = response.GetResult().GetBuckets();
            for (auto iter = buckets.begin(); iter != buckets.end(); ++iter) {
                cout << iter->GetName() << "\t" << iter->GetCreationDate().ToLocalTimeString(Aws::Utils::DateFormat::ISO_8601) << endl;
            }
        }
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

这里编译器选择MSVC
在这里插入图片描述
启动minio后,运行项目,能查到minio中的bucket
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值