QT支持https及编译OpenSSL

博客指出Qt下https请求不通常因缺少OpenSSL库,不同Qt版本所需OpenSSL库版本不同,如Qt 5.12.4前后使用的库版本有差异。还介绍了找到适合自己Qt版本的OpenSSL库的方法,并详细说明了编译OpenSSL库的步骤,包括下载、配置编译环境和工具、编译等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


搞懂Qt OpenSSL的具体原因

Qt下的https 请求不通的一个重要原因就是缺少OpenSSL的库,很多网上的内容都直接告诉大家把这两个库(libeay32、ssleay32)复制到工程下面这是不负责的回答,一个很重要的原因就是不同版本所需要的OpenSSL的库的大版本并不相同

  1. Qt自从5.12.4版本所使用的OpenSSL库的版本是1.1.x,而在这之下的Qt使用的版本是1.0.2系列
  2. 最大的区别是什么?就是OpenSSL从1.0.2升级成了1.1.x之后,整个动态库的名字都发生了改变,经典的libeay32.dll和ssleay32.dll摇身一变改名libcrypto-1_1.dll 和libssl-1_1.dll。
  3. 其次就算是Qt 5.12.4以下支持的1.0.2系列库也并不相同,因为1.0.2包含从a~u这么多版本,如果你带入错误的1.0.2库,轻则导致https请求不同,重则程序直接崩溃(亲身经历)

提示:如何找到适合自己的OpenSSL库并编译

一、如何找到和自己Qt版本真正合适的库并编译

在Qt中通过qDebug()直接输出

  qDebug()<<QSslSocket::sslLibraryBuildVersionString();
  //输出对应的OpenSSl库
  //OpenSSL 1.0.2o  27 Mar 2018

二、编译自己真正所需的OpenSSL库

1.下载OpenSSL(以我所需要的1.0.2o为例)

OpenSSL 源码历史版本下载地址
如下所示
历史版本很多,这里选择1.0.2系列
这里我们下载所需的o版本
下载完成之后我们解压到当前文件夹即可

2.配置编译环境及工具ActivePerl

2.1 由于OpenSSLwindows下需要用ActivePerl进行编译,我们首先下载,

ActivePerl 下载直通车
ActivePerl下载示意
下载后默认安装完毕就好

2.2 配置Perl环境变量

配置Perl环境变量
最新版默认是添加好的环境变量的
打开终端,然后直接输入命令

Perl -help

输出如下所示就是配置完毕了
Perl配置结果

3.编译OpenSSL库

3.1启动VS2017的命令行终端
  • 不同位数的库要采用不同的命令行工具
  • 一定要以管理员身份运行

OpenSSL不同位数编译区别
OpenSSL CMD 管理员启动

3.2切换到要编译的OpenSSL 目录

具体过程 ,如下所示
启动CMD,切换到工作目录

3.3 配置要Perl编译的位数
perl Configure VC-WIN64A no-asm --perfix="E:\\ThirdDLL\\OpenSS_LBuild64"

这里VC-WIN64A代表目标是64位库,VC-WIN32 代表是32位库,no-asm
编译过程中不使用汇编代码加快编译过程。
配置Perl编译条件在这里插入图片描述

3.4 执行编译
  • 输入ms\do_win64a
    输入ms\do_win64a

  • 输入nmake -f ms\ntdll.mak(ntdll 代表动态库,nt 代表静态库)
    输入nmake -f ms\ntdll.mak
    运行完毕如下所示nmake -f ms\ntdll.mak结果

  • 输入nmake -f ms\ntdll.mak install
    输入nmake -f ms\ntdll.mak install

  • 输入nmake -f ms\ntdll.mak test 进行测试
    输入nmake -f ms\ntdll.mak test
    最终结果
    nmake -f ms\ntdll.mak test结果

  • 编译命令汇总

perl Configure VC-WIN64A no-asm --perfix="E:\\ThirdDLL\\OpenSSL_Build64"
ms\do_win64a
nmake -f ms\ntdll.mak
nmake -f ms\ntdll.mak install
nmake -f ms\ntdll.mak test

总结

以上截图及操作均有本人实际操作完成

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值