Я разрабатываю программу, которая должна загружать файл с сайта в QT, но поскольку библиотеки QT по умолчанию не работают, я решил вместо этого использовать CURL.Следуя одному из примеров в части документации на их сайте, я создал следующий код:
downloader.h
#ifndef DOWNLOADER_H
#define DOWNLOADER_H
// Curl includes
#include "curl/curl.h"
#include "curl/types.h"
#include "curl/easy.h"
#include <QString>
#include <QObject>
class Downloader : QObject
{
Q_OBJECT
public:
Downloader();
void DownloadFile(QString url, QString directory);
signals:
void DownloadProgress(int downloaded, int total, QString message);
void DownloadComplete();
private:
void downProg(double t, double d, double ultotal, double ulnow);
void read(void *ptr, size_t size, size_t nmemb, FILE *stream);
void write(void *ptr, size_t size, size_t nmemb, FILE *stream);
};
#endif // DOWNLOADER_H
downloader.cpp
#include "downloader.h"
// Curl includes
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
Downloader::Downloader()
{
}
void Downloader::DownloadFile(QString url, QString directory) {
CURL *curl;
CURLcode res;
FILE *outFile;
//gchar *url = ptr;
QString outFileName = directory + "/tempDL/minecraft.jar";
curl = curl_easy_init();
if (curl) {
outFile = fopen(outFileName.toLocal8Bit().data(), "w");
char *urlC = url.toLocal8Bit().data();
curl_easy_setopt(curl, CURLOPT_URL, urlC);
}
}
void Downloader::downProg(double t, double d, double ultotal, double ulnow) {
}
void Downloader::read(void *ptr, size_t size, size_t nmemb, FILE *stream) {
}
void Downloader::write(void *ptr, size_t size, size_t nmemb, FILE *stream) {
}
Еще до сборки QT Creator сообщает мне, когда я наводю курсор мыши на строку: curl_easy_setopt(curl, CURLOPT_URL, urlC);
следующее: expected token ')' got '__typeof__'
Затем при компиляции программы я получаю collect2: Id returned 1 exit status
После того, как я немного погуглил, у меня возникло подозрение, что это может быть какое-то определенное утверждение, но я не смог найти решение после удаления их из моего класса.
И это мое последнее средство длязагрузчик файлов, поэтому мне действительно нужно сделать эту работу.
Редактировать:
После просмотра вывода компилятора я обнаружил следующее.Я подумал, что это могло бы помочь:
WARNING: Failure to find: Fetcher/http_fetcher.h
WARNING: Failure to find: Fetcher/http_error_codes.h
WARNING: Failure to find: Fetcher/http_fetcher.h
WARNING: Failure to find: Fetcher/http_error_codes.h
И, после комментирования проблемных фрагментов кода, ошибка collect2, кажется, вызвана из-за этой строки кода:
curl = curl_easy_init();
Обновление:
После того, как он дурачился с этим в течение нескольких дней, он только и сделал, что разочаровал меня.Я решил просто попытаться заставить функции QT по умолчанию работать снова вместо того, чтобы дурачиться с тем, чтобы заставить это работать.Спасибо за вашу помощь.