关于OpenSSL的一些问题的补充

本文主要介绍了OpenSSL中遇到的两个问题及其解决方案。一是删除SSL_CTX和SSL对象时,不能直接使用delete,应分别调用SSL_shutdown、SSL_free和SSL_CTX_free进行正确释放。二是关于C4251警告,可以忽略警告、改为指针类型或添加项目依赖。最后提到了当自己的DLL引入OpenSSL时,如何配置项目依赖和库文件。
摘要由CSDN通过智能技术生成

 【1】warning C4150: 删除指向不完整“ssl_ctx_st”类型的指针;没有调用析构函数

SSL_CTX *ctx;  

 SSL *ssl;

delete ssl;

delete ctx;

ctx 和 ssl 是不能直接用delete释放内存的,析构函数对调用的类是不可见的,必须以如下方式释放内存:

SSL_shutdown(ssl);

SSL_free(ssl);

SSL_CTX_free(ctx);

 

【2】warning C4251: “CSSLPort::m_clsSSLVec”: class“std::vector<_Ty>”需要有 dll 接口由 class "CSSLPort"的客户端使用

std::vector<CSSLPortMeta *> *m_pclsSSLVec;

其中class CSSLPortMeta 定义如下:
.h
class COMMUNICATION_API CSSLPortMeta
{
public:
	SOCKET m_hSocket;
	SSL *m_pSSL;

public:
	CSSLPortMeta(void);
	virtual ~CSSLPortMeta(void);

	void SetData(SOCKET socket, SSL *ssl);
};


.cpp
CSSLPortMeta::CSSLPortMeta(void)
{
	m_pSSL = NULL;
} 

CSSLPortMeta:: ~CSSLPortMeta(void)
{
	if(m_pSSL!=NULL)
	{
		SSL_shutdown(m_pSSL);
		SSL_free(m_pSSL);
	}
}

void CSSLPortMeta::SetData(SOCKET socket, SSL *ssl)
{
	m_hSocket = so
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值