Mikołaj Nawrocki
Mikołaj Nawrocki

Reputation: 21

Undefined reference after added QNetworkAccessManager?

I created a new class and added a function to it which is supposed to retrieve data on the current euro exchange rate. I used QNetworkAccessManager. When I try to build project I got errors. After I comment QNetworkAccessManager logic errors disapeard.

Currencies.h

#ifndef CURRENCIES_H
#define CURRENCIES_H

#include <QObject>
#include <QFile>
#include <QTextStream>
#include <QtDebug>
#include <QList>
#include <QProcess>

#include <QRegularExpression>
#include <QSettings>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QNetworkRequest>
#include <QtXml/QtXml>
#include <QDebug>
#include <string.h>

#include <QFile>
#include <QByteArray>
#include <QJsonObject>
#include <QJsonDocument>
#include <QObject>
#include <algorithm>



#include "Connections.h"



    class Euro : public QObject
    {
        Q_OBJECT

    private:
        //Ui::MainWindow *ui;
        float euroRate=0;
        float finalPriceEuro = 0;
        float finalPrice = 0;
        QString const urlEuroString = "http://api.nbp.pl/api/exchangerates/rates/a/eur/?format=json";
        Connection::Status connectStatus;
        QSettings settings;

    public:
        Euro();
        ~Euro();
        float GetEuroRate() const;
        void SetEuroRate(double);

        void SetFinalPriceEuro(float);
        float GetFinalPriceEuro() const;

        void SetFinalPrice(float);
        float GetFinalPrice() const;

        QString GetEuroUrl() const;

        void SaveEuroRate();

        void LoadEuroRate();

    };


#endif // CURRENCIES_H

Currencies.cpp

#include "Currencies.h"

Euro::Euro()
{
    QNetworkAccessManager* manager = new QNetworkAccessManager(this);

    connect(manager,&QNetworkAccessManager::finished,this,[&](QNetworkReply* reply)
            {

                if(reply->bytesAvailable())
                {
                    connectStatus.SetConnectionStatus(true);
                }
                else
                {
                    connectStatus.SetConnectionStatus(false);
                }
            });



    qDebug()<<connectStatus.GetConnectionStatus();
}

Euro::~Euro()
{

}

float Euro::GetEuroRate() const{
    return euroRate;
}

void Euro::SetEuroRate(double rateValue){
    euroRate = rateValue;
}

QString Euro::GetEuroUrl() const{
    return urlEuroString;
}

void Euro::SetFinalPriceEuro(float price)
{
    finalPriceEuro = price;
}

float Euro::GetFinalPriceEuro() const
{
    return finalPriceEuro;
}

void Euro::SetFinalPrice(float price)
{
    finalPrice = price;
}

float Euro::GetFinalPrice() const
{
    return finalPrice;
}

void Euro::SaveEuroRate(){
    //settings.setValue("euroRate",currencyRate.GetEuroRate());
    qDebug()<<"Zapisano!";
}

void Euro::LoadEuroRate()
{


}

Errors

:-1: error: CMakeFiles/ATLAS.dir/Currencies.cpp.obj:Currencies.cpp:(.text+0x2b0): undefined reference to `__imp__ZN21QNetworkAccessManagerC1EP7QObject'
:-1: error: CMakeFiles/ATLAS.dir/Currencies.cpp.obj:Currencies.cpp:(.text+0x2b7): undefined reference to `__imp__ZN21QNetworkAccessManager8finishedEP13QNetworkReply'
:-1: error: CMakeFiles/ATLAS.dir/Currencies.cpp.obj:Currencies.cpp:(.text+0x2d6): undefined reference to `__imp__ZN21QNetworkAccessManager16staticMetaObjectE'
:-1: error: collect2.exe: error: ld returned 1 exit status

Any idea how to solve this? Thanks a lot !

Upvotes: 0

Views: 279

Answers (0)

Related Questions