Qt Creator QmlScene中的SSL错误

时间:2018-11-30 21:22:06

标签: qt qml arcgis esri

我正在研究在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 .dlls引用解决了该问题。这个问题非常接近:QSslSocket: cannot call unresolved function 但是,它处理的是编译不运行AppStudio应用程序qmlscene工具的Qt应用程序。

我的项目设置为使用桌面Qt 5.11.2 MSVC2017 64位(msvc2017_64)工具包运行,并且我确保libeay32.dll和ssleay32.dll文件位于C:\ Qt \ Qt5.11.2 \ 5.11中。 2 \ msvc2017_64 \ bin。我已验证QtCreator正在从C:\ Qt \ Qt5.11.2 \ 5.11.2 \ msvc2017_64 \ bin \ qmlscene.exe启动qmlscene。如何获取网络请求?

1 个答案:

答案 0 :(得分:0)

在研究此错误的某个地方,我发现这可能是由于使用了错误的OpenSSL库版本引起的。我复制了

%USERPROFILE%\Applications\ArcGIS\AppStudio\bin\libeay32.dll 
%USERPROFILE%\Applications\ArcGIS\AppStudio\bin\ssleay32.dll 

插入C:\Qt\Qt5.11.2\5.11.2\msvc2017_64\bin中以替换其中的内容(我不确定它们是否从一开始就存在,或者我是否从OpenSSL网站下载它们之后添加了它们)。这解决了我的问题!