0

我创建了一个通过 http 协议下载文件的下载器应用程序。我使用 QNetworkAccessManager/QNetworkReply/QNetworkRequest 类来实现这一点。

QNetworkReply 文档中列出了几个错误代码——其中一个是错误代码 99,它是“未知的网络相关错误”。

在我的开发机器上,每当我使用应用程序启动下载时,它都会顺利下载,并且我没有收到任何错误代码 99。

当我部署我的应用程序并在另一台没有安装 Qt 的 PC 上测试它时,当我开始下载时,我立即收到错误代码 99;然而,使用 QNetworkAccessManager 类的其他函数工作得很好,即使在环境中没有 Qt 的 PC 上(例如 http POST 方法)。

我还使用与 OS X 完全相同的代码部署了这个应用程序,并且它的部署版本没有得到任何错误代码 99,并且一切正常。

在没有 Qt 开发环境的 PC 系统上出现未知的网络相关错误是否有任何原因?

我检查了dependency-walker 的所有依赖项等。我有点不知所措,不知道如何继续。

4

1 回答 1

1

问题是 QtNetwork API 显然使用 OpenSSL 进行某些操作。这在 Qt Docs 中并没有明确说明。有一个支持 SSL 的类,我认为如果我使用该类而不是 QNetworkAccessManager,我只需要包含 SSL DLL:

http://qt-project.org/doc/qt-5/ssl.html

它在我的开发机器上工作的原因是因为 OpenSSL DLL 在我的 PATH 变量上。

在应用程序目录中包含 OpenSSL DLL 解决了该问题。

于 2014-05-06T18:55:02.170 回答