gpt4 book ai didi

c++11 - 在 OpenSSL v1.1.0 中使用 unique_ptr

转载 作者:行者123 更新时间:2023-12-05 04:09:23 30 4
gpt4 key购买 nike

我有一些代码使用 unique_ptr 管理 SSL 和 SSL_CTX 指针。

以下代码使用 OpenSSL 1.0.2 编译,但不使用 OpenSSL 1.1.1:

std::unique_ptr<SSL>    m_pSession

我包含“openssl/ssl.h”,但使用 OpenSSL 1.1.1 时出现以下编译错误(使用 Visual Studio):

error C2027: use of undefined type 'ssl_st'

我搜索了一下,似乎更高版本的 OpenSSL 没有在任何地方提供 ssl_st 的真正声明?有什么解决方案?

最佳答案

在 OpenSSL 论坛的帮助下,我找到了以下解决方案。

为 unique_ptr 定义了自定义删除器:

struct SslDeleter {
void operator()(SSL *_p)
{
SSL_shutdown(_p);
SSL_free(_p);
}

void operator()(SSL_CTX *_p)
{
SSL_CTX_free(_p);
}
};

使用 typedef 轻松处理智能指针:

using UniqueSslPtr = std::unique_ptr<SSL, SslDeleter>;

using UniqueCtxPtr = std::unique_ptr<SSL_CTX, SslDeleter>;

自定义删除器适用于 SSLSSL_CTX,也应该适用于 shared_ptr

关于c++11 - 在 OpenSSL v1.1.0 中使用 unique_ptr<SSL>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46090517/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com