一 前言
先说 结论,编译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,上方说的错误
虽然时间较久,参考意义比较大