Ошибка QApplication: нет такого файла или каталога
Я установил С++ SDK, у которого есть Qt, но когда я пытаюсь скомпилировать код, связывающий QApplication, он дает мне ошибку:
Error QApplication: no such file or directory
Как связать эти библиотеки? Я искал в каталогах и есть файл с именем QApplication.h; Поэтому я попытался связать его с -I (связать каталог), но он все еще выдавал мне эту ошибку.
Ответы
Ответ 1
Чтобы начать работу, ошибка QApplication: no such file or directory
означает, что ваш компилятор не смог найти этот заголовок. Это не связано с процессом связывания, как вы упомянули в вопросе.
Флаг -I
(верхний регистр i) используется для указания каталога include (headers) (что вам нужно делать), а флаг -L
используется для указания библиотеки. Флаг -L
(нижний регистр L) используется для связывания приложения с указанной библиотекой.
Но вы можете использовать Qt в своих интересах: Qt имеет систему сборки с именем qmake, что упрощает работу. Например, когда я хочу скомпилировать main.cpp, я создаю файл main.pro. Для образовательных целей, скажем, этот исходный код - простой проект, который использует только QApplication
и QDeclarativeView
. Соответствующим .pro файлом будет:
TEMPLATE += app
QT += gui declarative
SOURCES += main.cpp
Затем выполните qmake
внутри этого каталога, чтобы создать Makefile, который будет использоваться для компиляции вашего приложения, и, наконец, выполнить 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
Ответ 2
В Qt 5 вам нужно добавить widgets
в переменную qmake QT
:
QT += widgets
Ответ 3
Для QT 5
Шаг 1:
.pro
(в про файле добавьте эти 2 строки)
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
Шаг 2:
В main.cpp
заменить код:
#include <QtGui/QApplication>
с:
#include <QApplication>
Ответ 4
Похоже, что у вас нет установленных библиотек разработки. Установите их, используя:
sudo apt-get install libqt4-dev
Как вы сказали int, комментарии, которые вы их установили, просто переустановите. Теперь. для обновления базы данных локации выполните эту команду $sudo updatedb
Затем $locate QApplication
, чтобы проверить, что у вас теперь установлен файл заголовка.
Теперь перейдите в папку, в которой у вас есть код, и введите эти команды
qmake -project
qmake
make
Затем вы можете найти созданный двоичный файл.
В качестве альтернативы вы можете использовать Qt Creator, если хотите графический интерфейс.
Ответ 5
Пожалуйста, убедитесь, что версия qmake, которую вы используете, соответствует версии QT, которую вы хотите использовать.
Конечно, вы можете просто запустить:
$qmake -v
Ваша проблема, по-видимому, является симптомом конфликта версий между QT 3 и 4, как можно видеть здесь:
http://lists.trolltech.com/qt4-preview-feedback/2005-11/thread00013-0.html
Чтобы исправить это, вы можете либо удалить свою старую установку QT, либо конкретно указать qmake-qt4 в своем файле Makefile.
Ответ 6
В Qt5 вы должны использовать QtWidgets
вместо QtGui
#include <QtGui/QComboBox> // incorrect in QT5
#include <QtWidgets/QComboBox> // correct in QT5
или
#include <QtGui/QStringListModel> // incorrect in QT5
#include <QtCore/QStringListModel> // correct in QT5
Ответ 7
вам нужно добавить QT + = виджеты в файле .pro перед первым исполнением, если вы выполнили перед добавлением этой строки, это не сработает, поэтому вам нужно начать создание файла с самого начала.
Ответ 8
Я предлагаю вам обновить SDK и начать новый проект и перекомпилировать все, что у вас есть. Кажется, у вас есть некоторые внутренние ошибки программы. Или вам не хватает пакета.
И делайте то, что сказал Абдиджик.
Ответ 9
Убедитесь, что у вас есть qmake на вашем пути (который qmake) и что он работает (qmake -v)
(ЕСЛИ вы должны убить его ctr-c, тогда в вашей среде что-то не так).
Затем выполните следующие действия: http://developer.qt.nokia.com/doc/qt-4.8/gettingstartedqt.html
Ответ 10
Вы можете изменить версию версии. Например, я попробовал QT 5.6.1, но это не сработало. Во-первых, я пробовал QT 5.7.0. Так оно и работало, удачи!:)