Проблемы со слотом в QT, ошибка компоновщика

#c #qt #slots

#c #qt #слоты

Вопрос:

Хотел спросить об ошибке компоновщика, которую я продолжаю получать. Я установил QT и использую его в Visual Studio 2005. В принципе, всякий раз, когда я пытаюсь объявить слот, я получаю это сообщение об ошибке компоновщика.

Ошибка 1 ошибка LNK2019: неразрешенный внешний символ «public: int __thiscall ipodGuiLoaderQT::hello(void)» (?hello@ipodGuiLoaderQT@@QAEHXZ), на который ссылается функция «public: virtual int __thiscall ipodGuiLoaderQT::qt_metacall(перечисление QMetaObject::Call, int, void * *)» (?qt_metacall @ipodGuiLoaderQT@@UAEHW4Call@QMetaObject@@HPAPAX@Z) moc_ipodguiloaderqt.obj

Обычно это говорит о том, что я не включил правильный файл заголовка. Но я должен был. Вот мой код на данный момент.

 #ifndef IPODGUILOADERQT_H
#define IPODGUILOADERQT_H

#include <QtGui/QMainWindow>
#include <QtGui/QAction>
#include <QObject>
#include "ui_ipodguiloaderqt.h"


class ipodGuiLoaderQT : public QMainWindow
{
    Q_OBJECT

public:
    ipodGuiLoaderQT(QWidget *parent = 0, Qt::WFlags flags = 0);
    ~ipodGuiLoaderQT();

private:
    Ui::ipodGuiLoaderQTClass ui;

    QAction* blah;

    public slots:
        int hello();


};

#endif // IPODGUILOADERQT_H
  

Любая помощь была бы оценена.

Комментарии:

1. Это ошибка компоновщика, так что это не проблема с заголовком. Вы где-нибудь внедрили этот слот? (Убедитесь, что вы также пытаетесь выполнить чистую сборку.)

2. да, высшая глупость! Извините за трату времени! Забыл реализовать это в cpp.

Ответ №1:

Ошибка 1 ошибка LNK2019: неразрешенный внешний символ «public: int __thiscall ipodGuiLoaderQT::hello(void)»

Компоновщик ясно говорит вам, что он не смог найти определение ipodGuiLoaderQT::hello(void) . То, что у вас есть как часть класса ipodGuiLoaderQT , — это просто объявление, и проверьте, предоставили ли вы его реализацию (т. Е. Определение) в соответствующем исходном файле и скомпилировали ли его тоже.