Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Проблемы с линковкой в QT


Автор: Tsukasa 13.10.2010, 22:02
Код

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>


Код

void MainWindow::on_pushButton_clicked()
{

    QNetworkAccessManager networkManager;
    QNetworkRequest request;
    request.setUrl(QUrl(ui->lineURL->text()));

    QNetworkReply *reply (networkManager.get(QNetworkRequest(request)));
    QEventLoop loop;

    connect(&networkManager, SIGNAL(finished(QNetworkReply*)), &loop, SLOT(quit()));

    loop.exec();
    reply->deleteLater();

    ui->text->setPlainText(QString(reply->readLine()));
}


Вроде достаточно простой пример - тут-же на форуме нашел....
но почемут не линкуется - ругается вот так:
Код

Выполняется сборка проекта _test-web...
Настройки не изменились, этап qmake пропускается.
Запускается "/usr/bin/make" -w 
make: Entering directory `/home/tsukasa-mixer/_proj/_test-web-build-desktop' 
g++ -c -m64 -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I../_test-web -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include -I. -I. -I../_test-web -I. -o mainwindow.o ../_test-web/mainwindow.cpp 
g++ -m64 -o _test-web main.o mainwindow.o moc_mainwindow.o -L/usr/lib64 -lQtGui -L/usr/lib64 -L/usr/X11R6/lib64 -lQtCore -lpthread 
mainwindow.o: In function `MainWindow::on_pushButton_clicked()': 
make: Leaving directory `/home/tsukasa-mixer/_proj/_test-web-build-desktop' 
/home/tsukasa-mixer/_proj/_test-web-build-desktop/../_test-web/mainwindow.cpp:23: undefined reference to `QNetworkAccessManager::QNetworkAccessManager(QObject*)' 
/home/tsukasa-mixer/_proj/_test-web-build-desktop/../_test-web/mainwindow.cpp:24: undefined reference to `QNetworkRequest::QNetworkRequest(QUrl const&)' 
/home/tsukasa-mixer/_proj/_test-web-build-desktop/../_test-web/mainwindow.cpp:25: undefined reference to `QNetworkRequest::setUrl(QUrl const&)' 
/home/tsukasa-mixer/_proj/_test-web-build-desktop/../_test-web/mainwindow.cpp:27: undefined reference to `QNetworkRequest::QNetworkRequest(QNetworkRequest const&)' 
/home/tsukasa-mixer/_proj/_test-web-build-desktop/../_test-web/mainwindow.cpp:27: undefined reference to `QNetworkAccessManager::get(QNetworkRequest const&)' 
/home/tsukasa-mixer/_proj/_test-web-build-desktop/../_test-web/mainwindow.cpp:27: undefined reference to `QNetworkRequest::~QNetworkRequest()' 
/home/tsukasa-mixer/_proj/_test-web-build-desktop/../_test-web/mainwindow.cpp:24: undefined reference to `QNetworkRequest::~QNetworkRequest()' 
/home/tsukasa-mixer/_proj/_test-web-build-desktop/../_test-web/mainwindow.cpp:23: undefined reference to `QNetworkAccessManager::~QNetworkAccessManager()' 
/home/tsukasa-mixer/_proj/_test-web-build-desktop/../_test-web/mainwindow.cpp:27: undefined reference to `QNetworkRequest::~QNetworkRequest()' 
/home/tsukasa-mixer/_proj/_test-web-build-desktop/../_test-web/mainwindow.cpp:24: undefined reference to `QNetworkRequest::~QNetworkRequest()' 
/home/tsukasa-mixer/_proj/_test-web-build-desktop/../_test-web/mainwindow.cpp:23: undefined reference to `QNetworkAccessManager::~QNetworkAccessManager()' 
collect2: ld returned 1 exit status 
make: *** [_test-web] Ошибка 1 
Процесс "/usr/bin/make" завершился с кодом %2.
Ошибка сборки проекта _test-web (цель: Настольный компьютер)
Во время выполнения сборки на этапе "Сборка"


учусь писать под *nix =/

Автор: kefir01 13.10.2010, 22:08
В файле проекта есть строчка
Код

QT       += core gui network


?

Автор: Tsukasa 13.10.2010, 22:17
хммммм нить......

я не стал писать все но по сути эт демо проект а все остальное написал автоматом QT creator

я ток включения правил

Добавлено через 3 минуты и 4 секунды
main.cpp:
Код

#include <QApplication>
#include "mainwindow.h"


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}



mainwindow.h:
Код

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>


namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    void click();



private slots:
    void on_pushButton_clicked();
};

#endif // MAINWINDOW_H



mainwondow.cpp:
Код

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QtNetwork>


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{

    QNetworkAccessManager networkManager;
    QNetworkRequest request;
    request.setUrl(QUrl(ui->lineURL->text()));

    QNetworkReply *reply (networkManager.get(QNetworkRequest(request)));
    QEventLoop loop;

    connect(&networkManager, SIGNAL(finished(QNetworkReply*)), &loop, SLOT(quit()));

    loop.exec();
    reply->deleteLater();

    ui->text->setPlainText(QString(reply->readLine()));
}




Собсно весь проект. =/

Добавлено через 5 минут и 2 секунды
чурт все понял - там небыло "network"

Автор: kefir01 14.10.2010, 00:01
Нет это в файле .pro
Надо вписать network в 

Код

QT       += core gui

Автор: Tsukasa 15.10.2010, 14:52
Да я так и понял .
тот пример успешно работает, щас только понять не могу другое немного.
Вынес этот код в отдельный класс (и соответственно отдельные файлы) и при линковке мне ругаетси вот так

Код

/home/tsukasa-mixer/_proj/web-info-parser-build-desktop/../web-info-parser/function.cpp:17: error: ‘connect’ was not declared in this scope

понять не могу ничего - почему так =(
Код

#include "function.h"
#include <QtCore/qobject.h>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QtNetwork>

уже даж подключил отдельно но не пашет - причину не понимаю =(

Автор: abraziv 24.12.2011, 05:37
Всем привет . Подскажите как исправить проблемму- 

L:\kursov\reckoning.cpp:16: ошибка: undefined reference to `_imp___ZN6Report12ReportEngineC1EP7QObject'
и много таких же

Автор: bsa 24.12.2011, 20:40
abraziv, для этого необходимо подключить библиотеку: добавить LIBS += /path/to/lib/mylib.so в *.pro

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)