Qt Creator QmlScene 中的 SSL 错误
SSL errors in Qt Creator QmlScene
我正在开发使用 Qt 5.11.2 和 QML 开发的 ESRI AppStudio 3.1 应用程序。我想在 Qt Creator 中 运行 我的应用程序并能够使用 qmlscene 工具预览它。我按照 the steps ESRI provides 进行了设置,并且运行良好。但是,我们只是添加了通过 JavaScript 向 HTTPS 上的 API 创建 XMLHttpRequest 的功能。这在通过 AppStudio AppRun.exe 工具(Qt Creator 工具菜单 > 外部 > AppStudio > 运行)启动应用程序时有效,但在 qmlscene 中无效。尝试进行 HTTPS 调用时出现以下控制台错误:
qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_CTX_new
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
我发现很多人在使用 Qt 应用程序时遇到过这个问题,并且通过修复 OpenSSL .dll 引用解决了这个问题。这个问题非常接近:
但是,它涉及编译 Qt 应用程序,而不是 运行为 AppStudio 应用程序设置 qmlscene 工具。
我的项目设置为 运行 使用 Desktop Qt 5.11.2 MSVC2017 64 位 (msvc2017_64) 套件并且我已确保 libeay32.dll 和 ssleay32.dll 文件存在于 C:\Qt\Qt5.11.2.11.2\msvc2017_64\bin 中。我已经验证 QtCreator 正在从 C:\Qt\Qt5.11.2.11.2\msvc2017_64\bin\qmlscene.exe 启动 qmlscene。如何让网络请求生效?
在我对这个错误的研究中,我发现这可能是由于使用了错误版本的 OpenSSL 库引起的。我复制了
%USERPROFILE%\Applications\ArcGIS\AppStudio\bin\libeay32.dll
%USERPROFILE%\Applications\ArcGIS\AppStudio\bin\ssleay32.dll
到 C:\Qt\Qt5.11.2.11.2\msvc2017_64\bin
以替换那里的那些(我不确定他们是否从一开始就在那里,或者我是否在从 OpenSSL 网站下载它们后添加了它们)。这解决了我的问题!
我正在开发使用 Qt 5.11.2 和 QML 开发的 ESRI AppStudio 3.1 应用程序。我想在 Qt Creator 中 运行 我的应用程序并能够使用 qmlscene 工具预览它。我按照 the steps ESRI provides 进行了设置,并且运行良好。但是,我们只是添加了通过 JavaScript 向 HTTPS 上的 API 创建 XMLHttpRequest 的功能。这在通过 AppStudio AppRun.exe 工具(Qt Creator 工具菜单 > 外部 > AppStudio > 运行)启动应用程序时有效,但在 qmlscene 中无效。尝试进行 HTTPS 调用时出现以下控制台错误:
qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_CTX_new
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
我发现很多人在使用 Qt 应用程序时遇到过这个问题,并且通过修复 OpenSSL .dll 引用解决了这个问题。这个问题非常接近:
我的项目设置为 运行 使用 Desktop Qt 5.11.2 MSVC2017 64 位 (msvc2017_64) 套件并且我已确保 libeay32.dll 和 ssleay32.dll 文件存在于 C:\Qt\Qt5.11.2.11.2\msvc2017_64\bin 中。我已经验证 QtCreator 正在从 C:\Qt\Qt5.11.2.11.2\msvc2017_64\bin\qmlscene.exe 启动 qmlscene。如何让网络请求生效?
在我对这个错误的研究中,我发现这可能是由于使用了错误版本的 OpenSSL 库引起的。我复制了
%USERPROFILE%\Applications\ArcGIS\AppStudio\bin\libeay32.dll
%USERPROFILE%\Applications\ArcGIS\AppStudio\bin\ssleay32.dll
到 C:\Qt\Qt5.11.2.11.2\msvc2017_64\bin
以替换那里的那些(我不确定他们是否从一开始就在那里,或者我是否在从 OpenSSL 网站下载它们后添加了它们)。这解决了我的问题!