Задать вопрос
krembrule2016
@krembrule2016

Почему возникают ошибки линковщика?

Доброе время суток!

Читаю книгу "Программирование на языке С++
в среде Qt Creator" от Е. Р. Алексеев, Г. Г. Злобин, Д. А.Костюк,
О. В.Чеснокова, А. С.Чмыхало

Столкнулся с такой проблемой:

Содержимое файла *.pro:
TEMPLATE = app
TARGET = ParentExample
QT += widgets

HEADERS += \
    parentwidget.h

SOURCES += \
    main.cpp \
    parentwidget.cpp


Содержимое файла parentwidget.cpp:
#include "parentwidget.h"
#include <QLabel>
#include <QPushButton>

ParentWidget::ParentWidget(QWidget* parent):QWidget(parent)
{
    //используем указатели, чтобы дочерние элементы не удалились после завершения работы конструктора
    QLabel* ILabel = new QLabel(this); //this - это экземпляр класс ParentWidget, указывается родительский виджет
    (*ILabel).setGeometry(50,0,100,30);
    (*ILabel).setText("Привет, товарищ!");
    QPushButton* lPushButton = new QPushButton(this);
    (*lPushButton).setGeometry(50,50,100,30);
    (*lPushButton).setText("Жми!");
    setGeometry(x(),y(),300,150);
    setWindowTitle("Наследник Образец");


}


Содержимое файла parentwidget.h:
#ifndef PARENTWIDGET_H
#define PARENTWIDGET_H

#include <QWidget>

class ParentWidget : public QWidget
{
    Q_OBJECT
public:
    explicit ParentWidget(QWidget *parent = 0);

signals:

public slots:
};

#endif // PARENTWIDGET_H


В итоге при попытке собрать и запустить проект у меня появляются ошибки такого рода:
parentwidget.obj:-1: ошибка: LNK2001: неразрешенный внешний символ ""public: virtual struct QMetaObject const * __cdecl ParentWidget::metaObject(void)const " (?metaObject@ParentWidget@@UEBAPEBUQMetaObject@@XZ)"

parentwidget.obj:-1: ошибка: LNK2001: неразрешенный внешний символ ""public: virtual void * __cdecl ParentWidget::qt_metacast(char const *)" (?qt_metacast@ParentWidget@@UEAAPEAXPEBD@Z)"

parentwidget.obj:-1: ошибка: LNK2001: неразрешенный внешний символ ""public: virtual int __cdecl ParentWidget::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@ParentWidget@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)"

debug\widgets.exe:-1: ошибка: LNK1120: неразрешенных внешних элементов: 3


Очень много в выдаче по этой проблеме, но я не обладаю соответствующими знаниями, чтобы извлечь из этого что-то полезное.
Есть какие-нибудь мысли?=)
  • Вопрос задан
  • 803 просмотра
Подписаться 1 Оценить 2 комментария
Решения вопроса 1
Zifix
@Zifix Куратор тега Qt
Barbatum
Вы слышали про оператор "->" в С++? Ну и попробуйте снести папку сборки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы