Windwos +vs 2022 编译openssl 1.0.2 库

发布于:2024-06-29 ⋅ 阅读:(64) ⋅ 点赞:(0)

一 前言

先说 结论,编译64位报错,查了一圈没找到解决方案,最后换了32位的。

使用qt访问web接口,因为是https,没有openssl库会报错

    QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());
    if (reply)
    {
        if (reply->error() == QNetworkReply::NoError)
        {
            // 处理成功响应
            QByteArray responseData = reply->readAll();
            // 处理responseData
            ui->textEdit->append("data:" + QString::fromUtf8(responseData) + "\n");
        }
        else
        {
            // 处理错误响应
            qDebug() << "Request Error: " << reply->errorString();
            ui->textEdit->append("error:" + mReply->errorString());
        }
        reply->deleteLater();
    }

错误就是 error:Error creating SSL context ()
说明需要openssl
使用下面代码查看qt需要的库

QSslSocket::sslLibraryBuildVersionString()

ui->textEdit->append("lib v:" + QSslSocket::sslLibraryBuildVersionString());

如图
在这里插入图片描述

二准备工具

1、安装 perl
http://strawberryperl.com/download/5.28.1.1/strawberry-perl-5.28.1.1-64bit.msi
2、下载 openssl 1.0.2u
链接
3、 安装 NASM

测试命令

perl  -v
nasm --v

出错就用everything ,查找 nasm.exe 和 perl .exe的文件位置添加到用户环境变量中

三 开始编译

cmd 管理员进入 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin(vs 版本不一样,可能路径不同) 运行 vcvars32.bat
在openssl代码下载后,解压,自己建一个文件夹作为输出,比如bin
cmd 窗口切换到代码路径下
挨个执行命令就行,注意改成自己的代码路径

perl Configure VC-WIN32 no-asm --prefix=D:\ssl\openssl-1.0.2u\openssl-1.0.2u\bin
 
ms\do_nasm
 
nmake -f ms\ntdll.mak 
 
nmake -f ms\ntdll.mak test 
 
nmake -f ms\ntdll.mak install 
 
nmake -f ms\ntdll.mak clean

期间可能会出现 ** fatal error U1077: “rc”: 返回代码“0x1”** 之类的错误,网上查的解决方案是,解决方法是查找 rc.exe ,用everything 查找最新的 rc.exe,加到环境变量里。原理没懂,反正解决了

四结果文件

就在bin目录下(自己建的输出目录)
在这里插入图片描述

五参考文章

解决rc,上方说的错误
虽然时间较久,参考意义比较大


网站公告

今日签到

点亮在社区的每一天
去签到