Qt:tls initialization failed 99

这是一个经常遇到的问题,之所以开一贴,实在是看不得网络上的一些不靠谱的帖子。

字面意思,就是缺少SSL库。当前使用的是Qt 5.15版本,默认只支持openssl 1.1了。Debug时,将 Qt\Tools\OpenSSL 目录下的对应的 libcrypto-1_1-x64.dll  libssl-1_1-x64.dll 这样的文件复制到程序目录,即可。32位使用不带-x64的版本。

但如果发布时,也以此发布,则部分机器上仍然会报如上错误。有人从openssl官网下载了一个安装包,安装后就正常了。还有说使用ssleay32这样的dll,从Qt源码来看,这种方法在Qt 5.15新版本中是无效的。

为什么debug版本复制两个dll就可以了,release版本不行?实际上,原因很简单。因为Qt的Tools目录下的openssl的dll使用的是vc2015编译的,对应的运行时库是msvcr100.dll,所以,发布时,缺少了这个dll,自然运行不起来。如此,解决方法就有两个。

方法一,带上msvcr100.dll,测试通过。

方法二,使用vc2019(自己的程序使用的IDE版本)重新编译openssl源码,这样就不需要额外带上vc2015的运行时库了。

需要安装perl和nasm。如果不安装nasm,下面的编译参数中需要加上 no-asm
VC的编译命令行环境中执行:
perl configure VC-WIN64A-ONECORE –prefix=G:\Qt\Tools\OpenSSL\openssl
nmake
测试也通过。

 

转载请注明来源,谢谢。

有偿解决C++编程问题,承接项目定制开发;寻一份全职或兼职Windows C++开发工作。联系邮箱:[email protected]


老刀的技术日志 » Qt:tls initialization failed 99

发表评论