Неизвестная ошибка, связанная с сетью, только в развернутом приложении Qt

Я создал приложение-загрузчик, которое загружает файлы по протоколу http. Для этого я использовал классы QNetworkAccessManager/QNetworkReply/QNetworkRequest.

В документации QNetworkReply перечислены несколько кодов ошибок, один из которых - код ошибки 99, который является "неизвестной ошибкой, связанной с сетью".

На моей машине разработки, когда я запускаю загрузку с приложением, оно загружается гладко, и я не получаю код ошибки 99.

Когда я развертываю свое приложение и тестирую его на другом компьютере, на котором не установлен Qt, при запуске загрузки я сразу получаю код ошибки 99; однако другие функции, использующие класс QNetworkAccessManager, работают отлично, даже на ПК без Qt в своей среде (например, метод http POST).

Я также развернул это приложение с тем же точным кодом для OS X, и развернутые его версии НЕ получают код ошибки 99, и все работает нормально.

Есть ли какая-либо причина, по которой я получаю неизвестную ошибку, связанную с сетью, на компьютерах, на которых нет среды разработки Qt?

Я проверил зависимостей для всех зависимостей и т. Д. Я немного растерялся и не знаю, как поступить.

1 ответ

Проблема в том, что API QtNetwork использует OpenSSL для некоторых операций, по-видимому. В Qt Docs это не было четко обозначено. Существует класс для поддержки SSL, и я решил, что мне нужно будет включить только DLL DLL, если я использую этот класс, а не QNetworkAccessManager:

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

Причина, по которой это сработало на моей машине для разработки, заключается в том, что библиотеки OpenSSL находятся в моей переменной PATH.

Включение библиотек OpenSSL в каталог приложения решило проблему.

Другие вопросы по тегам