Windows上でOpenSSLを使ってQt 5.8を動作させようとしていますが、前進するたびに別の大きなオブジェクトにぶつかります。Qt 5.8をWindows上でOpenSSLを使って作業する方法
編集/更新:このエラーはデバッグモードでのみ発生します。 Qtの5.8
- :ここ は、これまでのところ、私の設定ですssleay32.dll)をアプリケーションディレクトリ
- SSL接続が正常に動作しています
しかしここに問題があります: SSLを使用しているかどうかにかかわらず、接続を開くたびに、アプリケーションを終了するとエラーが発生します。 (ntdll.dll)で例外がスローされました。
私はそれがメモリの問題だと思ったが、それは私の問題を解決していませんので、私は、Visual漏れ検出器で自分のコードをテストしました。
void InfoGatherer::getInfo(QString name)
{
// TODO: Search for the name and select right page
QUrl url = QUrl(name);
data.clear();
QNetworkRequest *request = new QNetworkRequest(url);
request->setRawHeader("User-Agent", userAgent);
if (name.startsWith("https"))
{
QSslConfiguration sslConfiguration(QSslConfiguration::defaultConfiguration());
sslConfiguration.setProtocol(QSsl::TlsV1_2OrLater);
request->setSslConfiguration(sslConfiguration);
}
else
{
// TODO: Try to get https
}
reply = webCtrl->get(*request);
connect(reply, SIGNAL(readyRead()), this, SLOT(onReadyRead()));
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(slotError(QNetworkReply::NetworkError)));
connect(reply, SIGNAL(finished()), this, SLOT(onReplyFinished()));
// Mem leaks (Visual Leak Detector)
if(!name.startsWith("https"))
webCtrl->deleteResource(*request);
delete request;
}
void InfoGatherer::onReadyRead()
{
data.append(reply->readAll());
}
void InfoGatherer::slotError(QNetworkReply::NetworkError)
{
// TODO
qWarning() << "ErrorNo: " << reply->error() << "for url: " << reply->url().toString();
qDebug() << "Request failed, " << reply->errorString();
qDebug() << "Headers:" << reply->rawHeaderList() << "content:" << reply->readAll();
}
void InfoGatherer::onReplyFinished()
{
QString html = QString(data);
emit got_webpage(&html);
}
のQt:私が結集 は、ここで私はもう開始する必要があり見当もつかない...
Here is a small example in Qt Creator 4.2.1 which doesn't work either
は私のコード(Iは、OpenSSLのDLLを削除すると、それは、HTTPで正常に動作します)ではありません持っています正しくOpenSSLライブラリを検出します。
qDebug() << "Support SSL: " << QSslSocket::supportsSsl()
<< "\nLib Version Number: " << QSslSocket::sslLibraryVersionNumber()
<< "\nLib Version String: " << QSslSocket::sslLibraryVersionString()
<< "\nLib Build Version Number: " << QSslSocket::sslLibraryBuildVersionNumber()
<< "\nLib Build Version String: " << QSslSocket::sslLibraryBuildVersionString();
- サポートSSL:真
- Libのバージョン番号:268443791
- Libのバージョン文字列: "のOpenSSL 1.0.2h 2016年5月3日"
- Libはバージョン番号をビルドします。 "のOpenSSL 1.0.2h 2016年5月3日":268443791
- Libのバージョン文字列を構築します
いや、これは何も解決しません。それを私のコードでTestetし、より小さな例をテストするための新しい小さなプロジェクトを作成しました。 (https://drive.google.com/file/d/0B4RkTj0UzvBAUWJjSi1KUFEzVjQ/view?usp=sharing)私にとって – Darkproduct
作品[ここでのQt Creatorを4.2.1での私の小さなプロジェクトがあります]。何もクラッシュしない。 [画像](https://ibb.co/b3HByF)私にとっては同じ – codekaizer
いやを参照してください、私はアプリケーション閉じるときに - >「DebugForOnlineTest.exeはもう動作しませんが、あなたが問題を検索したいです?」興味深いもの: – Darkproduct