Ошибка при включении заголовков Qt - PullRequest
1 голос
/ 06 июля 2011

Я довольно новичок в Qt, и у меня возникли некоторые проблемы с сборкой и связью библиотеки QMobility.Я не использую QT Creator для этого.Вот пример test.cpp:

#include "Qt/qapplication.h"
#include "Qt/qobject.h"
//#include <QtSystemInfo> //
#include "qsysteminfo.h"

int main()
{}

build cmd:

gcc -c test.cpp -L/usr/include/qt4/ -lQtCore -I/usr/include/qt4 -I/usr/include/QtSystemInfo

Ошибка: в файле, включенном в test.cpp: 4: / usr / include / QtSystemInfo /qsysteminfo.h: 51: фатальная ошибка: QObject: Нет такого файла или каталога

или если я добавлю строку 3, которая прокомментирована сейчас, он просто получит ошибку "файл не найден".

Что я делаю не так?Спасибо.

Ответы [ 5 ]

2 голосов
/ 06 июля 2011

Обычно вы создаете файл проекта QT (something.pro) и компилируете, используя

qmake && make

в вашем терминале. Вы пробовали это?

2 голосов
/ 06 июля 2011

Вы должны быть в том числе, как: #include <QApplication>.

Если это не сработает, возможно, у вас плохая установка.Попробуйте переустановить.

1 голос
/ 28 февраля 2017

В отдельном проекте Visual Studio я столкнулся с тем же ответом.У меня было

<code>#include <QtCore>

и путь включения как <code>c:\Qt\4.8.6\include\QtCore.

Системные файлы имели ошибку:

<code>QtCore\qobject.h : No such file or directory.

Я добавил <code>c:\Qt\4.8.6\include к пути включения, и проблема исчезла.

1 голос
/ 07 июля 2011

Почему вы хотите навредить себе таким образом :-) Вам будет нелегко написать make-файл для компиляции без использования qmake, предположив, что вы хотите использовать мета-объектную систему Qt (вы должны использовать инструмент moc как Что ж). Во всяком случае, чтобы прояснить ситуацию, я переписал ваш пример так:

#include <QApplication>
#include <QObject>
#include <QSystemInfo>

int main()
{
   return 0;
}

но вы можете сохранить его так, как написали. Чтобы скомпилировать это, я должен был использовать эту командную строку:

g++ test.cpp -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtCore -I/usr/include/qt4 -I/usr/local/Trolltech/QtMobility-x86-1.1.3/include/QtSystemInfo -I/usr/local/Trolltech/QtMobility-x86-1.1.3/include/QtMobility

Конечно, вам придется изменить пути в соответствии с расположением заголовков в вашей системе. Помните, что каждый заголовок включает в себя другие, поэтому вам придется «рекурсивно» предоставлять все необходимые пути включения. Конечно, потом вам придется связывать библиотеки.

С файлом test.pro было бы проще:

QT      += core gui
CONFIG  += mobility
MOBILITY    += systeminfo
TEMPLATE    = app
TARGET  = test
SOURCES     += test.cpp

, и он правильно настроен со всеми необходимыми путями включения, которые вам понадобятся, и корректными ссылками на библиотеки. Вы также можете использовать все расширения Qt для C ++.

qmake test.pro && make

и все готово.

0 голосов
/ 06 июля 2011

В зависимости от используемой вами среды IDE вы сможете настроить «проект Qt». Тогда IDE решает проблему, которую вы и другие здесь решаете «вручную». CodeBlocks поддерживает Qt-проекты, MS Visual Studio и многие другие IDE. Я предлагаю вам Google "<yourIDE> Qt-проект начала работы". Или подумайте об использовании другой IDE. Но вам определенно нужно ознакомиться с qmake и .PRO-файлами в определенный момент, я боюсь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...