QT - Neue erstellte Klasse - LNK2019 bei Aufruf der neuen Klasse



  • Hallo liebe Forummitglieder,

    ich weiß nicht, was ich falsch mache. Beim Aufruf einer neu erstellten Klasse in meinem Qt-Projekt erhalte ich einen Linkerfehler (LNK2019). Hier der Code:

    genre.h

    #ifndef GENRE_H
    #define GENRE_H
    
    #include <QStringList>
    
    class Genre
    {
    
    public:
        Genre();
        QStringList getGenres() const;
    
    private:
        QStringList lstgenres;
    
    };
    
    #endif // GENRE_H
    

    genre.cpp

    #include "genre.h"
    
    Genre::Genre()
    {
    
    }
    
    QStringList Genre::getGenres()
    {
        lstgenres << "Jazz"
                  << "Pop"
                  << "Klassik";
    
        return lstgenres;
    }
    

    mainwindow.h

    #include <QMediaMetaData>
    
    namespace Ui {
    class MainWindow;
    }
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
    
    private slots:
        void on_btnPlay_clicked();
    
    private:
        Ui::MainWindow *ui;
        QMediaPlayer* player;
        QMediaPlaylist* playlist;
        Genre* genre;
    };
    
    #endif // MAINWINDOW_H
    

    mainwindow.cpp

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow){
    
        ui->setupUi(this);
    
        //Player als Stream-Player definieren
        player = new QMediaPlayer(this,QMediaPlayer::StreamPlayback);
    
        //Lade Genreliste in die genre-ComboBox
        genre = new Genre();
        ui->cmbGenre->addItems(genre->getGenres());
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::on_btnPlay_clicked()
    {
        player->setMedia(QUrl("http://stream.laut.fm/jazzloft"));
        player->setVolume(80);
        player->play();
    }
    

    Fehler:

    mainwindow.obj👎 Fehler: LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __cdecl Genre::Genre(void)" (??0Genre@@QEAA@XZ)" in Funktion ""public: __cdecl MainWindow::MainWindow(class QWidget *)" (??0MainWindow@@QEAA@PEAVQWidget@@@Z)".

    mainwindow.obj👎 Fehler: LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: class QStringList __cdecl Genre::getGenres(void)const " (?getGenres@Genre@@QEBA?AVQStringList@@XZ)" in Funktion ""public: __cdecl MainWindow::MainWindow(class QWidget *)" (??0MainWindow@@QEAA@PEAVQWidget@@@Z)".

    Fehler: LNK1120: 2 nicht aufgelöste Externe

    Viele Grüße
    Eric



  • Hast du die neue Klasse in die .pro Datei, in deinem Projekt, eingetragen?



  • Bennisen schrieb:

    Hast du die neue Klasse in die .pro Datei, in deinem Projekt, eingetragen?

    Ja

    QT       += core gui multimedia
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    TARGET = iRadioStation
    TEMPLATE = app
    
    SOURCES += main.cpp\
               mainwindow.cpp \
               genre.cpp
    
    HEADERS  += mainwindow.h \
                genre.h
    
    FORMS    += mainwindow.ui
    


  • Ich habe es herausgefunden! Es lag am verwendeten Kit und den Projekteinstellungen. Vorher hatte ich das Kit für VS2015, mit dem Kit MinGW_32Bit funktioniert es. Jetzt meckert der Linker nicht mehr!


Log in to reply