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 :
    Benutzervariable

    Variable Wert
    QTDIR C:\Qt\2010.02.1\qt

    Systemvariablen

    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 dankbar

    Nachtrag:
    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ührt

    erneut "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 funktioniert 🙂

    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 ?



  • 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. 🙂


Anmelden zum Antworten