Russian Qt Forum

Qt => Вопросы новичков => Тема начата: fisenkdima от Февраль 04, 2013, 14:30



Название: Ошибка (неразрешенный внешний символ). Не могу осознать, почему.
Отправлено: fisenkdima от Февраль 04, 2013, 14:30
Создав новое GUI приложение Qt, и добавив в класс MainWindow в качестве закрытого члена экземпляр также только что созданного нового класса, в котором ничего нет, окромя пустого public-конструктора, при попытке собрать приложение, мне выдаёт следующую ошибку:

Код:
mainwindow.obj:-1: ошибка: LNK2019: ссылка на неразрешенный внешний символ 
"public: __thiscall new_class::new_class(void)" (??0new_class@@QAE@XZ) в функции
"public: __thiscall MainWindow::MainWindow(class QWidget *)" (??0MainWindow@@QAE@PAVQWidget@@@Z)

Кто-нибудь может сказать мне, где я оступился на ровном месте?


Название: Re: Ошибка (неразрешенный внешний символ). Не могу осознать, почему.
Отправлено: Kurles от Февраль 04, 2013, 14:42
Код
C++ (Qt)
QT += gui
в *.pro файле присутствует?


Название: Re: Ошибка (неразрешенный внешний символ). Не могу осознать, почему.
Отправлено: fisenkdima от Февраль 04, 2013, 14:46
Код:
QT       += core gui
Вот это присутствует.


Название: Re: Ошибка (неразрешенный внешний символ). Не могу осознать, почему.
Отправлено: kambala от Февраль 04, 2013, 15:58
тело конструктора твоего класса точно прописано? покажи код.


Название: Re: Ошибка (неразрешенный внешний символ). Не могу осознать, почему.
Отправлено: fisenkdima от Февраль 05, 2013, 15:26
тело конструктора твоего класса точно прописано? покажи код.

Проект содержит 2 класса, один из них MainWindow, в который (к автоматически сгенерированному коду) был добавлен новый закрытый член: экземпляр класса Cube, который содержит автоматически сгенерированный пустой конструктор, и больше ничего.

Если кому-то проще посмотреть так, то вот заархивированный папка с проектом (там мною, а не средой, написана одна строка -__-, ну, не считая того, что я накидал объектов на форму, через дизайнер).

https://dl.dropbox.com/u/102021951/task_1.zip (https://dl.dropbox.com/u/102021951/task_1.zip)

Код по-файлово:
main.cpp:
Код:
#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
   
    return a.exec();
}

mainwindow.h:
Код:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "cube.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
   
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
   
private:
    Ui::MainWindow *ui;
    Cube solid1;
};

#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);
}

MainWindow::~MainWindow()
{
    delete ui;
}

cube.h:
Код:
#ifndef CUBE_H
#define CUBE_H

class Cube
{
public:
    Cube();
};

#endif // CUBE_H

cube.cpp:
Код:
#include "cube.h"

Cube::Cube()
{
}


Название: Re: Ошибка (неразрешенный внешний символ). Не могу осознать, почему.
Отправлено: Serr500 от Февраль 05, 2013, 16:16
Никаких ошибок не выдало. Попробуйте полностью удалить папку сборки проекта и откомпилировать заново.