Qt 4.6.2 unter Microsoft Visual Studio 2008 Prof.
-
Hallo ,
ich schaffe es nicht folgendes einfaches Programm unter Visual Studio 2008 Prof zu kompilieren (Debug) :#include <QApplication> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton hello("Hallo Welt!"); hello.resize(100, 30); hello.show(); return app.exec(); }
ich erhalte folgende Fehlermeldung :
1>Kompilieren... 1>main.cpp 1>.\main.cpp(2) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "QApplication": No such file or directory 1>Das Buildprotokoll wurde unter "file://e:\Eigene Projekte\Hallo Welt\Hallo Welt\Debug\BuildLog.htm" gespeichert. 1>Hallo Welt - 1 Fehler, 0 Warnung(en)
Irgendwie scheint er den Pfad nicht zu finden obwohl ich eigentlich (denke ich zumindest) angegeben habe. Meine Umgebungsvariablen in Windows 7 habe ich so gesetzt :
BenutzervariableVariable Wert
QTDIR C:\Qt\2010.02.1\qtSystemvariablen
Variable Wert
INCLUDE %QTDIR%\include
LIB %QTDIR%\lib
PATH ...;C:\Qt\2010.02.1\qt\bin;...
QMAKESPEC mingw32-g++Habe QT mit dem Cutebuilder eingerichtet, beim ersten mal gab es eine Fehlermeldung , nach einem Tipp in einem ähnlichen Beitrag hier im Forum ( das löschen der mocinclude.tmp Dateien in ensprechenden Ordnern) klappte das aber ohne Probleme. Wo liegt der Fehler , muss ich noch irgendwelche Einstellung in Visual Studio ändern ??
Bin für jeden Tip dankbarNachtrag:
Meine Einstellungen in Visual Studio ( oberste Einträge)
Projekte und Projektmappe --> VC++-Verzeichnisse
Ausführbare Dateien:
C:\Qt\2010.02.1\qt\bin
Include Dateien:
C:\Qt\2010.02.1\qt\include
Verweis Dateien:
C:\Qt\2010.02.1\qt\lib
Bibliotheksdateien
C:\Qt\2010.02.1\qt\lib
-
"QApplication" liegt auch nicht in QTDIR/include, sondern in QTDIR/include/QtGui.
also entweder die einzelnen subdirs hinzufügen, oder include jeweils mit dem Qt*-Verzeichnis angeben.#include <QtGui/QApplication> #include <QtXml/QDomDocument> // usw.
Es soll doch so ein VS-integration Paket geben. Kann das denn damit umgehen?
Funktioniert qmake . die qt .pro-Dateien nicht mit VS?
-
@Labrador: danke für die schnelle Antwort,
mit dem zufügen von QTDIR/inlcude/QTGui funktioniert zumindest das kompilieren.
Nur erhalte ich jetzt folgende Fehlermeldung wenn ich es unter Visual Studio starten möchte:1>------ Erstellen gestartet: Projekt: Hallo Welt, Konfiguration: Debug Win32 ------
1>Verknüpfen...
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: virtual __thiscall QApplication::~QApplication(void)" (__imp_??1QApplication@@UAE@XZ)" in Funktion "_main".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: virtual __thiscall QPushButton::~QPushButton(void)" (__imp_??1QPushButton@@UAE@XZ)" in Funktion "_main".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static int __cdecl QApplication::exec(void)" (__imp_?exec@QApplication@@SAHXZ)" in Funktion "_main".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: void __thiscall QWidget::show(void)" (__imp_?show@QWidget@@QAEXXZ)" in Funktion "_main".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: void __thiscall QWidget::resize(int,int)" (__imp_?resize@QWidget@@QAEXHH@Z)" in Funktion "_main".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall QPushButton::QPushButton(class QString const &,class QWidget *)" (__imp_??0QPushButton@@QAE@ABVQString@@PAVQWidget@@@Z)" in Funktion "_main".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall QApplication::QApplication(int &,char * *,int)" (__imp_??0QApplication@@QAE@AAHPAPADH@Z)" in Funktion "_main".
1>E:\Eigene Projekte\Hallo Welt\Debug\Hallo Welt.exe : fatal error LNK1120: 7 nicht aufgelöste externe Verweise.
1>Das Buildprotokoll wurde unter "file://e:\Eigene Projekte\Hallo Welt\Hallo Welt\Debug\BuildLog.htm" gespeichert.
1>Hallo Welt - 8 Fehler, 0 Warnung(en)Mit dem VS-Integration Paket hab ich es noch nicht versucht , ich dachte das wäre für ältere Qt-Versionen. Bei deinem letzten Satz weiß ich nicht was du genau meinst
-
qmake ist eigentlich die leichteste Art, funktionierende Makefiles zu bekommen.
QMAKESPEC setzen und loslegen. Dafür legst du ein Qt Project file (*.pro) an. Steht alles in der Doku. Keine AHnung ob das auch gleich mit VS2008 geht.Zu dem Fehler: Dein Linker beschwert sich, weil du ihm nicht sagst, dass er auch die qt4-libs mitlinken soll. Entweder gibst du die manuell an oder du frägst google nach "qt4 visual studio integration", das gibt soviele Ergebnisse, die kannst du nicht übersehen...
-
Es gibt ein Visual Studio Add-in, das Templates für Qt-Projekte mitbringt, zu finden hier. Habe es auch eine Weile zusammen mit dem VS genutzt, bin aber mittlerweile wieder zum Creator gewechselt - für Qt-Projekte ist der einfach unschlagbar.
-
es ist schonmal der falsche makespec. Wenn du mit msvc kompilierst, solltest du ihn auf
win32-msvc2008
setzen.
-
So, hab jetzt nochmal komplett Qt deinstalliert.
- qt-win-opensource-4.6.2-vs2008.exe unter C:\Qt installiert
- Umgebungsvariablen unter Windows 7 neu gesetzt
diesmal mit QMAKESPEC = win32-msvc2008- Verzeichnisse in Visual Studio neu gesetzt
- in Visual Studio Eingabeaufforderung ins Verzeichnis C:\Qt gewechselt und
"configure -platform win32-msvc2008 -no-qt3support"
ausgeführt
- "nmake" ausgeführterneut "Hallo Welt" ausgeführt, immer noch die gleichen Fehlermeldung
- Visual Studio Add-in "qt-vs-addin-1.1.4.exe" installiert
brachte aber auch keine Besserung---------------------------------------------------------------------------
Folgendes Vorgehen brachte einen Erfolg:
Einen Ordner "HalloWelt" erstellt und folgende hallowelt.cpp datei erstellt#include <QApplication> #include <QLabel> int main(int argc, char **argv) { QApplication app(argc, argv); QLabel *label = new QLabel("Hello World!"); label->show(); return app.exec(); }
Dann in die Konsole gewechselt , ins Verzeichniss und
"qmake -project -t vcapp -o hallowelt.pro"
ausgeführt, anschließend nochmal
"qmake"
Die dabei enstande Datei "hallowelt.vcproj" über doppelklick mit Visual Studio geöffnet, kompiliert und siehe da ^^ es funktioniertMeine Frage ist nun, gibt es einen einfacheren Weg (über Visual Studio) ? oder muss ich das jedesmal wenn ich ein neues Projekt starte oder auch nur eine Datei hinzufüge erneut durchführen ?
-
Kyuss77 schrieb:
Meine Frage ist nun, gibt es einen einfacheren Weg (über Visual Studio) ? oder muss ich das jedesmal wenn ich ein neues Projekt starte oder auch nur eine Datei hinzufüge erneut durchführen ?
Hast du auch ganz sicher die Qt-Tempaltes für das Projekt verwendet? Soweit ich weiß, hat bei mir die Installation des VS-addin vollkommen ausgereicht.
Der Fehler sagt außerdem, dass du wahrscheinlich vergessen hast gegen QtCore/QtGui zu linken. Schreib der Einfachheit halber mal folgendes an den Anfang des Sourcecodes
#pragma comment(lib,"QtCore.lib") #pragma comment(lib,"QtGui.lib")
-
Wenn ich diese Code-Zeilen in das Programm einfüge kompiliert es nicht mehr und zeigt mir folgende Fehlermeldung:
LINK : fatal error LNK1104: Datei "QtCore.lib" kann nicht geöffnet werden.
Wie verwende ich denn diese Qt-Templates ?
-
Kyuss77 schrieb:
Wenn ich diese Code-Zeilen in das Programm einfüge kompiliert es nicht mehr und zeigt mir folgende Fehlermeldung:
LINK : fatal error LNK1104: Datei "QtCore.lib" kann nicht geöffnet werden.
Das kann auch heißen "konnte nicht gefunden werden". Der Pfad für libs ist QTSDK/qt/lib und sollte dem VS bekannt sein.
Wie verwende ich denn diese Qt-Templates ?
Einfach ein neues Projekt erstellen und als Projekttyp Qt4-GUI oder sowas wählen. Probiers zuerst mal so.
-
Danke, mit erstellen eines QtApplication Projekt funktioniert es , auch ohne umständliches Anlegen der *.vcproj über Kommandozeile ^^
Der Fehler war wahrscheinlich dass ich versucht habe die Beispiel-Programme mit
dem "QtConsoleApplication" zu erstellen.