#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
, — это просто объявление, и проверьте, предоставили ли вы его реализацию (т. Е. Определение) в соответствующем исходном файле и скомпилировали ли его тоже.