[Qt] komunikat "collect2: ld returned 1 exit status" - QUrl

Próbuję napisać klienta FTP ( na razie wersja nieskończona), jednak podczas pisania napotkałem pewien problem. oto kod:

ftp2.h

#ifndef FTP2_H

#define FTP2_H

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

class MyWindow: public QWidget

{

    Q_OBJECT;

public:

    MyWindow();

    ~MyWindow() {}

    void SetupUi(QWidget *Form);

protected slots:

    void Connect ();

    void Disconnect ();

    void GetFile ();

    void CancelGetFile ();

    void ProcessItem (QTreeWidgetItem *item, int column);

    void CdUp();

    void Quit ();

    void ftpCommandFinished (int id, bool error);

    void ftpListInfo (const QUrlInfo & urlInfo);

    void ftpDataTransferProgress (qint64 done, qint64 total);

private:

    QGridLayout *gridLayout;

    QLabel *labelFTP;

    QLineEdit *lineEdit;

    QTreeWidget *treeWidget;

    QPushButton *pushButtonConnect;

    QPushButton *pushButtonDisconnect;

    QPushButton *pushButtonCdUp;

    QPushButton *pushButtonGet;

    QFrame *line;

    QPushButton *pushButtonQuit;


    QFtp *ftp;

    QFile *file;

    QProgressDialog *progressDialog;

};

#endif // FTP2_H

ftp2.cpp

#include 

//#include 

MyWindow::MyWindow() : QWidget()

{

    setGeometry(200,200,300,500);

    SetupUi(this);


    ftp = NULL;

    progressDialog = new QProgressDialog (this);

    progressDialog->setWindowTitle("Pobieranie pliku");


    connect (pushButtonConnect, SIGNAL(clicked()),this,SLOT(Connect()));

    connect (lineEdit, SIGNAL(returnPressed()),this,SLOT(Connect()));

    connect (pushButtonDisconnect,SIGNAL(clicked()),this,SLOT(Disconnect()));

    connect (pushButtonGet,SIGNAL(clicked()),this,SLOT(GetFile()));

    connect (progressDialog, SIGNAL(canceled()),this,SLOT(CancelGetFile()));

    connect (pushButtonQuit, SIGNAL(clicked()),this,SLOT(Quit()));

    connect (treeWidget,SIGNAL(itemActivated(QTreeWidgetItem*,int)),this,SLOT(ProcessItem(QTreeWidgetItem*,int)));

    connect (pushButtonCdUp,SIGNAL(clicked()),this,SLOT(CdUp()));



}

void MyWindow::SetupUi(QWidget *Form)

{

    Form->resize(200,345);

    gridLayout = new QGridLayout(Form);

    gridLayout->setObjectName(QString::fromUtf8("gridLayout"));

    labelFTP = new QLabel(Form);

    labelFTP->setObjectName(QString::fromUtf8("labelFTP"));


    gridLayout->addWidget(labelFTP, 0, 0, 1, 1);


    lineEdit = new QLineEdit (Form);

    lineEdit->setObjectName(QString::fromUtf8("lineEdit"));


    gridLayout ->addWidget(lineEdit,0,1,1,4);


    treeWidget = new QTreeWidget (Form);

    treeWidget->setObjectName(QString::fromUtf8("treeWidget"));

    treeWidget->setEnabled(false);


    gridLayout->addWidget(treeWidget, 1, 0, 1, 5);


    pushButtonConnect = new QPushButton(Form);

    pushButtonConnect->setObjectName(QString::fromUtf8("pushButtonConnect"));


    gridLayout->addWidget(pushButtonConnect,2,1,1,1);


    pushButtonDisconnect = new QPushButton(Form);

    pushButtonDisconnect->setObjectName(QString::fromUtf8("pushButtonDisconnect"));

    pushButtonDisconnect->setEnabled(false);


    gridLayout->addWidget(pushButtonDisconnect, 2, 2, 1, 1);


    pushButtonCdUp = new QPushButton(Form);

    pushButtonCdUp->setObjectName(QString::fromUtf8("pushButtonCdUp"));

    pushButtonCdUp->setEnabled(false);


    gridLayout->addWidget(pushButtonCdUp, 2, 3, 1, 1);


    pushButtonGet = new QPushButton(Form);

    pushButtonGet->setObjectName(QString::fromUtf8("pushButtonGet"));

    pushButtonGet->setEnabled(false);


    gridLayout->addWidget(pushButtonGet, 2, 4, 1, 1);


    line = new QFrame(Form);

    line->setObjectName(QString::fromUtf8("line"));

    line->setFrameShape(QFrame::HLine);

    line->setFrameShadow(QFrame::Sunken);


    gridLayout->addWidget(line, 3, 0, 1, 5);


    pushButtonQuit = new QPushButton(Form);

    pushButtonQuit->setObjectName(QString::fromUtf8("pushButtonQuit"));


    gridLayout->addWidget(pushButtonQuit, 4, 4, 1, 1);



    Form->setWindowTitle("Klient FTP");

    labelFTP->setText("Serwer FTP");

    lineEdit->setToolTip("Adres URL zdalnego komputera");

    lineEdit->setText("ftp://");

    treeWidget->headerItem()->setText(0,"Nazwa");

    treeWidget->headerItem()->setText(1,"Rozmiar");

    treeWidget->headerItem()->setText(2,"Wlasciciel");

    treeWidget->headerItem()->setText(3,"Grupa");

    treeWidget->headerItem()->setText(4,"Czas");

    treeWidget->setToolTip("Pliki i foldery na zdalnym komputerze");

    pushButtonConnect->setToolTip("Polaczenie ze zdalnym komputerem");

    pushButtonConnect->setText("Połącz");

    pushButtonDisconnect->setToolTip("Rozłączenie ze zdalnym komputerem");

    pushButtonDisconnect->setText("Rozłącz");

    pushButtonCdUp->setToolTip("Przejście do katalogu nadrzędnego");

    pushButtonCdUp->setText(QString());

    pushButtonGet->setToolTip("Pobieranie pliku");

    pushButtonGet->setText("Pobierz");

    pushButtonQuit->setToolTip("Zakończ działanie");

    pushButtonQuit->setText("Zakończ");




}


void MyWindow::Connect ()

{

    if(!ftp)

    {

       QUrl url(lineEdit -> text ().toLower ());

        if(!url.isValid() || url.scheme() != "ftp")

        {

            QMessageBox::critical(this,"Błąd", "niepoprawny adres URL");

            return;

        }

    }

}

main.cpp

#include 

#include 


int main(int argc, char *argv[])

{

    QApplication app (argc, argv);

    QTextCodec::setCodecForCStrings (QTextCodec::codecForName ("Windows-1250"));

    MyWindow window;

    window.show ();

    return app.exec();

}

Jeżeli usunę #include , to wyświetla mi się “variable QUrl has initializer but incomplete type”, a jak zostawię to jest błąd “collect2: ld returned 1 exit status”. Jak rozwiązać ten problem?

Jeśli otworzysz okienko (z tego, co pamiętam) „Komunikaty kompilatora”, to tam znajdziesz dokładny opis błędu. Bo zakładam, że to Qt Creator.

network do projektu dodany? jak nie, to edytuj plik .pro i dodaj:

QT+= network

potem wyczyść i zbuduj projekt.

Ten moduł jest wymagany przez QFtp i pewnie on powoduje błąd kolekcji linkera. Zamieszczaj wszystkie komunikaty błędów z tej zakładki co Wasacz napisał, a nie tylko Problemy podczas budowania