我的Qt Windows桌面应用程序在第一次QNetworkAccessManager-> get调用时崩溃。我在日志中收到以下错误。
Auto configuration failed
16100:error:02001015:system library:fopen:Is a directory:.\crypto\bio\bss_file.c:122:fopen('d:/openssl/ssl/openssl.cnf','rb')
16100:error:2006D002:BIO routines:BIO_new_file:system lib:.\crypto\bio\bss_file.c:127:
16100:error:0E078002:configuration file routines:DEF_LOAD:system lib:.\crypto\conf\conf_def.c:199:
这与OpenSSL配置有关,但我实际上并没有在我的应用程序中使用(也不需要)SSL。我知道OpenSSL库与QNetworkAccessManager一起加载,但有没有办法禁用它?
我可以通过重新安装openssl库来解决这个问题,就像它陈述here一样,但这不是一个好的解决方案,因为我不能强迫我的客户因为我的应用而在他们的系统上重新安装openssl。所以我正在寻找更好的解决方案。 我已经尝试将DEFINES + = QT_NO_SSL添加到我的项目文件中,但没有运气。有趣的是,这只是在我部署我的应用程序后才发生,它可以从Qt Creator顺利运行。
重要的是我可以通过修改OPENSSL_CONF环境变量来手动操作崩溃(在部署系统上)。如果它不存在或设置正确,应用程序将不会崩溃,否则(env.variable设置为不正确的文件夹)应用程序崩溃。
有什么想法吗?