Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: При сборке проекта (make) ошибка: QApplication - не найден такой файл или каталог  (Прочитано 17385 раз)
0 Пользователей и 1 Гость смотрят эту тему.
andrystepa
Помогающий

ru
Offline Offline

« : 01-07-2008 12:45 » 

Купил книжку Ж.Бланшет, М.Саммерфилд "Qt4  программирование GUI на C++". У меня установлена Fedora Core 8. Уже первое же упражнение не захотело компилироваться выдавая ошибку:
main.cpp:1:24: error: QApplication: Нет такого файла или каталога
Сильно удивившись решил взять пару любых примеров с диска к книге и скомпилировать их. Приведу пример одного из них:
файл gotocell.h

Код:
#ifndef GOTOCELLDIALOG_H
#define GOTOCELLDIALOG_H

#include <QDialog>

#include "ui_gotocelldialog.h"

class GoToCellDialog : public QDialog, public Ui::GoToCellDialog
{
    Q_OBJECT

public:
    GoToCellDialog(QWidget *parent = 0);

private slots:
    void on_lineEdit_textChanged();
};

#endif

файл gotocell.cpp

Код:
#include <QtGui>

#include "gotocelldialog.h"

GoToCellDialog::GoToCellDialog(QWidget *parent)
    : QDialog(parent)
{
    setupUi(this);

    QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}");
    lineEdit->setValidator(new QRegExpValidator(regExp, this));

    connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
    connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
}

void GoToCellDialog::on_lineEdit_textChanged()
{
    okButton->setEnabled(lineEdit->hasAcceptableInput());
}


файл main.cpp

Код:
#include <QApplication>

#include "gotocelldialog.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    GoToCellDialog *dialog = new GoToCellDialog;
    dialog->show();
    return app.exec();
}

команды qmake -project  и qmake gotocell.pro сработали без проблем, а вот при сборке - make вылезло такое:
Код:
g++ -c -pipe -Wall -W -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables  -DQT_NO_DEBUG -DQT_SHARED -DQT_TABLET_SUPPORT -DQT_THREAD_SUPPORT -I/usr/lib/qt-3.3/mkspecs/default -I. -I. -I/usr/lib/qt-3.3/include -o main.o main.cpp
main.cpp:1:24: error: QApplication: Нет такого файла или каталога
In file included from main.cpp:3:
gotocelldialog.h:4:19: error: QDialog: Нет такого файла или каталога
gotocelldialog.h:6:31: error: ui_gotocelldialog.h: Нет такого файла или каталога
gotocelldialog.h:8: ошибка: expected class-name before ‘,’ token
gotocelldialog.h:8: ошибка: ‘Ui’ не был декларирован
gotocelldialog.h:8: ошибка: expected `{' before ‘GoToCellDialog’
gotocelldialog.h:8: ошибка: invalid function declaration
main.cpp: In function ‘int main(int, char**)’:
main.cpp:7: ошибка: нет декларации ‘QApplication’ в этой области видимости
main.cpp:7: ошибка: expected `;' before ‘app’
main.cpp:8: ошибка: invalid use of undefined type ‘class GoToCellDialog’
gotocelldialog.h:8: ошибка: forward declaration of ‘class GoToCellDialog’
main.cpp:9: ошибка: invalid use of undefined type ‘class GoToCellDialog’
gotocelldialog.h:8: ошибка: forward declaration of ‘class GoToCellDialog’
main.cpp:10: ошибка: нет декларации ‘app’ в этой области видимости
main.cpp: At global scope:
main.cpp:5: предупреждение: unused parameter ‘argc’
main.cpp:5: предупреждение: unused parameter ‘argv’
make: *** [main.o] Ошибка 1

Я не могу понять, почему не найден  QApplication? В виндовом варианте Qt эта программа благополучно скомпилилась! Правда в Федоре стоит Qt установившийся вместе с дистрибутивом. Более того, судя по пунктам в меню "Разработка" в Главном меню Иксов установлены и Qt3.3  и Qt4. Может это вызывает какой-то конфликт? Третью версию удалить не получается - половина утилит KDE пропадает вместе с нею. К сожалению я не знаю, может нет каких-то переменных окружения, или они неправильно настроены? Вроде документация утверждает что все переменные устанавливаются вместе с Qt! Что надо настроить? Подскажите пожалуйста!
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 01-07-2008 12:52 » 

Команда qmake --version что дает? Скорее всего это симлинк на qmake 3 версии. В моем случае я пользуюсь командой qmake-qt4 когда создаю проект.
« Последнее редактирование: 01-07-2008 13:19 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
andrystepa
Помогающий

ru
Offline Offline

« Ответ #2 : 01-07-2008 17:15 » 

Пробовал:
qmake -qt4 -project
qmake -qt4 find.pro
qmake -project -qt4
Во всех случаях пишет, что такой опции: -qt4 не существует. qmake -version как и предполагалось дает версию 3.3.8b
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 01-07-2008 17:22 » 

qmake-qt4 Пишется слитно, это так называется программа Улыбаюсь
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
andrystepa
Помогающий

ru
Offline Offline

« Ответ #4 : 01-07-2008 17:31 » new

Ох! Прошу Пардону!!! Я уже и сам разобрался что это не опция а название программы - посмотрел в каталог /usr/bin.
Спасибо большое за подсказку!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines