簡體   English   中英

包含 Qt 標頭時出錯

[英]Error when including Qt Headers

我對 Qt 很陌生,我在構建和鏈接 QMobility 庫時遇到了一些麻煩。 我沒有為此使用 qt 創建者。 這是一個示例 test.cpp:

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

int main()
{}

構建 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 行,它只會得到一個未找到文件的錯誤。

我究竟做錯了什么? 謝謝。

您應該包括: #include <QApplication>

如果這不起作用,則可能是您的安裝錯誤。 嘗試重新安裝。

通常你創建一個 QT 項目文件(something.pro)並使用編譯

qmake && make

在您的終端中。 你試過嗎?

在一個獨立的 Visual Studio 項目中,我遇到了相同的響應。 我有

#include <QtCore>

並且包含路徑為c:\Qt\4.8.6\include\QtCore.

系統文件有錯誤:

QtCore\qobject.h: No such file or directory.

我將c:\Qt\4.8.6\include到包含路徑中,問題就消失了。

你為什么要這樣傷害自己:-) 你將很難編寫一個 makefile 來編譯而不使用 qmake,假設你想利用 Qt 元 ZA8CFDE6331BD59EB2AC96F8911C4B6 工具)(你也應該使用 moc4B6 系統工具) 無論如何,為了更清楚,我像這樣重寫了您的示例:

#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

當然,您必須根據系統中標題的位置更改路徑。 請記住,每個 header 都包含其他內容,因此您必須“遞歸”提供所有必要的包含路徑。 當然,您之后必須鏈接庫。

使用 test.pro 文件會更簡單:

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

並且已正確配置了您需要的所有必要包含路徑並正確鏈接到庫。 您也可以通過這種方式使用 C++ 的所有 Qt 擴展。

qmake test.pro && make

你就完成了。

根據您使用的 IDE,您應該能夠設置“Qt 項目”。 然后 IDE 會解決您和其他人在這里嘗試“手動”解決的麻煩。 CodeBlocks 支持 Qt 項目、MS Visual Studio,我認為還有很多其他的 IDE。 我建議你谷歌“ <yourIDE> Qt-project getting started”。 或者考慮使用另一個 IDE。 但是你肯定必須熟悉 qmake 和 .PRO 文件,恐怕在某個時候。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM