仅在已部署的 Qt 应用程序上出现未知的网络相关错误
Posted
技术标签:
【中文标题】仅在已部署的 Qt 应用程序上出现未知的网络相关错误【英文标题】:unknown network-related error only on deployed Qt application 【发布时间】:2014-05-06 17:15:03 【问题描述】:我创建了一个通过 http 协议下载文件的下载器应用程序。 我使用 QNetworkAccessManager/QNetworkReply/QNetworkRequest 类来实现这一点。
QNetworkReply 文档中列出了几个错误代码,其中一个是错误代码 99,它是“未知的网络相关错误”。
在我的开发机器上,每当我使用应用程序启动下载时,它都会顺利下载,并且我没有收到任何错误代码 99。
当我在另一台没有安装 Qt 的 PC 上部署我的应用程序并对其进行测试时,当我开始下载时,我立即收到错误代码 99;但是,使用 QNetworkAccessManager 类的其他函数也可以正常工作,即使在环境中没有 Qt 的 PC 上(例如 http POST 方法)。
我还使用与 OS X 完全相同的代码部署了这个应用程序,它的部署版本没有出现任何错误代码 99,并且一切正常。
在没有 Qt 开发环境的 PC 系统上,我会收到未知的网络相关错误吗?
我检查了dependency-walker 的所有依赖项等。我有点不知所措,不知道如何继续。
【问题讨论】:
【参考方案1】:显然,问题在于 QtNetwork API 使用 OpenSSL 进行某些操作。这在 Qt Docs 中并没有明确说明。有一个支持 SSL 的类,我认为如果我使用该类而不是 QNetworkAccessManager,我只需要包含 SSL DLL:
http://qt-project.org/doc/qt-5/ssl.html
它在我的开发机器上工作的原因是因为 OpenSSL DLL 在我的 PATH 变量上。
在应用程序目录中包含 OpenSSL DLL 解决了该问题。
【讨论】:
以上是关于仅在已部署的 Qt 应用程序上出现未知的网络相关错误的主要内容,如果未能解决你的问题,请参考以下文章
Qt 中的 GLWidget 仅在 mousemove 上更新
无法在已部署的反应本机应用程序上使用 IP 地址进行本地网络调用