2012-01-24 9 views
35

Я установил C++ SDK, которые имеют Qt, но когда я пытаюсь компиляции кода, связывающую QApplication он дает мне ошибку:QApplication Ошибка: нет такого файла или каталога

Error QApplication: no such file or directory 

Как связать эти библиотеки? Я искал в каталогах и есть файл с именем QApplication.h; Поэтому я попытался связать его с -I (связать каталог), но он все еще давал мне эту ошибку.

+0

'Это дает мне эту ошибку'. Какая ошибка?Отправьте правильный вывод ошибки, которую вы получаете. Никто не сможет вам помочь, пока вы не предоставите полную информацию. –

+7

Название этого вопроса. Источник - это простой файл, я думал, что мне не нужно публиковать его, но просто: http://pastebin.com/972XtFUz –

+0

Что такое вывод '$ locate QApplication'? –

ответ

40

Чтобы начать работу, ошибка QApplication: no such file or directory означает, что ваш компилятор не смог найти этот заголовок. Это не связано с процессом связывания, как вы упомянули в вопросе.

-I флаг (прописные я) используется для указания включают (заголовки) каталог (который является то, что вам нужно сделать), в то время как -L флаг используется для указания каталога библиотек.Флаг -l (нижний регистр L) используется для связи вашего приложения с указанной библиотекой.

Но вы можете использовать Qt в ваших интересах: Qt имеет систему сборки под названием QMAKE, что делает вещи проще. Например, когда я хочу скомпилировать main.cpp Я создаю файл main.pro. Для образовательных целей, скажем, этот исходный код - это простой проект, который использует только QApplication и QDeclarativeView. Соответствующий .pro файл будет:

TEMPLATE += app 
QT += gui declarative 
SOURCES += main.cpp 

Затем выполните qmake внутри этой директории создать файл сборки, который будет использоваться для компиляции приложения, и, наконец, выполнить make, чтобы получить работу.

На моей системе это make выходы:

g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_DECLARATIVE_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/opt/qt_47x/mkspecs/linux-g++ -I. -I/opt/qt_47x/include/QtCore -I/opt/qt_47x/include/QtGui -I/opt/qt_47x/include/QtDeclarative -I/opt/qt_47x/include -I/usr/X11R6/include -I. -o main.o main.cpp 
g++ -Wl,-O1 -Wl,-rpath,/opt/qt_47x/lib -o main main.o -L/opt/qt_47x/lib -L/usr/X11R6/lib -lQtDeclarative -L/opt/qt_47x/lib -lQtScript -lQtSvg -L/usr/X11R6/lib -lQtSql -lQtXmlPatterns -lQtNetwork -lQtGui -lQtCore -lpthread 

Примечание: Я установил Qt в другом каталоге ->/opt/qt_47x

+14

После Qt 5.x вам нужно добавить 'QT + = widgets' в файл **. Pro **. – karlphillip

11

Похоже, что у вас нет установленных библиотек разработки. Установите их, используя:

sudo apt-get install libqt4-dev 

Как вы сказали, в комментариях, которые вы их установили, просто переустановите. Теперь. чтобы обновить базу данных локатора, введите эту команду $sudo updatedb

Затем $locate QApplication, чтобы проверить, что у вас теперь установлен файл заголовка.

Теперь Гото в папку, в которой у вас есть тип кода & эти команды

qmake -project 
qmake 
make 

Затем вы можете найти бинарный файл, созданный.

В качестве альтернативы вы можете использовать Qt Creator, если хотите графический интерфейс.

+0

Если я наберу qmake -project, оболочка замерзает в течение нескольких секунд, я нужно сломать ctrl + c. –

+0

Введите '$ qmake -project -d -Wall' в cmdline и скажите, где он висит. Кроме того, вы пробовали QtCreator? –

+0

ramy @ ubuntu: ~/Documents/C++/Prova $ $ qmake -project -d -Wall Не найдено команды '-project', вы имели в виду: Команда 'project' из пакета 'turnin-ng' (Вселенная) -project: команда не найдена –

0

Я предлагаю вам обновить SDK и начать новый проект и перекомпилировать все, что вы имеете. Кажется, у вас есть некоторые внутренние ошибки программы. Или у вас отсутствует пакет.

И от того, что сказал Абдиджик.

+0

Я не понимаю, почему у вас проблемы, если вы установили пакет. Какие SDK и NDK вы используете? и какой инструмент у вас есть для разработки? Создатель QT? Вопрос QT? – Denonth

4

Убедитесь, что версия qmake, которую вы используете, соответствует версии QT, которую вы хотите использовать.

Чтобы быть уверенным, что вы можете просто запустить:

$qmake -v 

Ваша проблема, как представляется, является симптомом версии конфликта между Qt 3 и 4, как можно видеть здесь:

http://lists.trolltech.com/qt4-preview-feedback/2005-11/thread00013-0.html

Чтобы исправить это, вы можете либо удалить свою старую установку QT, либо конкретно указать qmake-qt4 в своем Makefile.

+0

+1 для показа, как проверить версию, а также для предоставления ссылки на дополнительную информацию. –

74

В Qt 5 вы теперь должны добавить widgets переменной QT QMAKE:

QT += widgets 
+0

вы можете указать? – 4pie0

+1

Не знаете, что вы хотите, чтобы я указал ... – Timmmm

+0

вот как я решил это: [link] (http://stackoverflow.com/a/15120378/1141471) – 4pie0

2

В Qt5 вы должны использовать QtWidgets вместо QtGui

#include <QtGui/QComboBox>  // incorrect in QT5 
#include <QtWidgets/QComboBox> // correct in QT5 

or

#include <QtGui/QStringListModel> // incorrect in QT5 
#include <QtCore/QStringListModel> // correct in QT5 
23

Для QT 5

Шаг1: .pro (в про файле, добавьте эти 2 строки)

QT  += core gui 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

Шаг2: В main.cpp заменить код:

#include <QtGui/QApplication> 

с:

#include <QApplication> 
1

вы должны добавить QT + = виджеты в файле .pro перед первым исполнением, если выполнить перед добавлением этой строки его не собирается работать, поэтому лет нужно, чтобы начать создание файла с начала.

0

Вы можете изменить стиль сборки. Например, я попробовал QT 5.6.1, но это не сработало. Как я пробовал QT 5.7.0. Так оно и работало, удачи! :)

Смежные вопросы