发现默认情况下服务器Windous Server 2012系统不支持openssl,就算你把已经编译好的库编译好放进去也不行,因为系统就缺少了系统的补丁。
一开始的想的解决办法是:怀疑是因为Windows 10编译的库文件Windous Server 2012系统中不支持,所以先下载openssl的源码,在服务器上重新编译,然后根据编译源码的方法在网上搜索,网上大部分的办法下载编译openssl的源码,编译的具体步骤忘记了,反正首先需要两个工具,perl和nmake,这里可太费事了
其中perl还好说,nmake还要安装一般都是安装Visual Studio来自带安装,然后Visual Studio安装怎么都安装不好使,总是报错。
当时脑子真的短路了,这么尝试下去发现终究是弯路,这些一点软用都没有,这些的本质不也是编译->生成库文件,我现在库文件都有了只是在当前系统不支持,何必多走弯路。
解决办法:
openssl不支持的原因主要就是系统有的补丁没有安装。
原文链接:windows2012r2安装openssl
Windows Server 2012 R2 补丁包下载地址:依次安装最后重启即可
美中不足的地方就是这些库到底起什么作用并没有搞清楚,就是解决了问题而已,Windows这方面的资料还是太少了,在官网搜索也没有得到相应的解释。下次有时间应该还是会重新翻回来看看这些补丁的作用。
我之前在windows日志报错中,安装过补丁KB2919442和KB2919355,但是结果还是不行,这次下面的全部安装后成功
1、clearcompressionflag.exe
https://download.microsoft.com/download/D/B/1/DB1F29FC-316D-481E-B435-1654BA185DCF/clearcompressionflag.exe
2、KB2919442
1、http://download.windowsupdate.com/c/msdownload/update/software/crup/2014/02/windows8.1-kb2919442-x64_f97d8290d9d75d96f163095c4cb05e1b9f6986e0.msu
2、https://download.microsoft.com/download/D/6/0/D60ED3E0-93A5-4505-8F6A-8D0A5DA16C8A/Windows8.1-KB2919442-x64.msu
3、KB2919355
http://download.windowsupdate.com/d/msdownload/update/software/crup/2014/02/windows8.1-kb2919355-x64_e6f4da4d33564419065a7370865faacf9b40ff72.msu
4、KB2932046
http://download.windowsupdate.com/d/msdownload/update/software/crup/2014/02/windows8.1-kb2932046-x64_6aee5fda6e2a6729d1fbae6eac08693acd70d985.msu
5、KB2959977
https://download.microsoft.com/download/9/C/7/9C7A638F-D1E3-40F4-A755-64899A18B411/Windows8.1-KB2959977-x64.msu
6、KB2937592
http://download.windowsupdate.com/c/msdownload/update/software/crup/2014/02/windows8.1-kb2937592-x64_4abc0a39c9e500c0fbe9c41282169c92315cafc2.msu
7、KB2938439
http://download.windowsupdate.com/c/msdownload/update/software/crup/2014/03/windows8.1-kb2938439-x64_3ed1574369e36b11f37af41aa3a875a115a3eac1.msu
8、KB2934018
https://download.microsoft.com/download/D/B/1/DB1F29FC-316D-481E-B435-1654BA185DCF/Windows8.1-KB2934018-x64.msu
9、dotnet-hosting-6.0.1-win.exe
https://download.visualstudio.microsoft.com/download/pr/b69fc347-c3c8-49bc-b452-dc89a1efdf7b/ebac64c8271dab3b9b1e87c72ef47374/dotnet-hosting-6.0.1-win.exe
oepnssl库
1、先获取当前版本
输出当前QT支持的openSSL版本
qDebug()<<"QSslSocket="<<QSslSocket::sslLibraryBuildVersionString();
//判断系统是否支持OpenSSL
//如果此平台支持SSL,则返回true; 否则,返回false。 如果平台不支持SSL,则套接字将在连接阶段失败。不支持就需要看下面的解决方法。
qDebug() << "OpenSSL支持情况:" << QSslSocket::supportsSsl();
我的当前版本是
QSslSocket= "OpenSSL 1.1.1b 26 Feb 2019"
所以我等会下载的就会是OpenSSL v1.1.1的版本
7.2、下载对应的版本
openssl下载地址:文章来源:https://www.toymoban.com/news/detail-446968.html
http://slproweb.com/products/Win32OpenSSL.html
根据自己使用的QT编译器时32位还是64位,对应下载安装包。将下载的安装包进行安装,安装到第二个选项时,选择安装到指定的/bin目录下。安装之后,找到安装目录下的两个文件(其中我的是libcrypto-1_1.dll 和libssl-1_1.dll),拷贝到QT编译器目录下即可。文章来源地址https://www.toymoban.com/news/detail-446968.html
到了这里,关于Qt之Windows Server 2012 R2不支持openssl的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!