Projekte mit Qt und Dev-cpp(MinGW) kompilieren



  • Hallo,

    ich habe mir Beschreibung zu Devc++ und Qt durchgelesen. Alles hat soweit geklappt, die exe Datei wurde in dem release Ordner erstellt. Habe diese dann auch nach der Beschreibung in Devc++ eingebunden. Das Problem ist nun das ich diese exe Datei nicht ausführen kann. Folgende Fehlermeldung kommt:

    Die Anwendung konnte nicht richtig initialisiert werden (0xc015002)
    Mein Betriebssystem ist Vista.
    Vielleicht könnt ihr mir ja helfen

    Mfg Gustav



  • hi,

    ich kann ein normales fenster mit nem normalen widget und nem normalen button kompilieren. aber wenn ich ein OpenGl projekt kompielieren will sagt mir das dos-promt:

    *glwidget.cpp:39:20: QtOpenGL: No such file or directory

    ...

    glwidget.h:41:21: QGLWidget: No such file or directory

    ...
    *
    😡

    ich hab nachgeschaut, die headerdateien sind im include ordner des QT-Verzeichnises...
    wie bekomm ich das hin?

    mfg rungaaz



  • Steht das in deinem .pro-file?

    QT += opengl
    


  • Nein,

    aber wenn ich es reinschreibe und dann kompiliere funzt es auch nicht...
    jedenfalls ist es jetzt ein anderer error also er findet die QtOpenGL.h

    btw: wie bringe ich QT dazu QT += opengl automatisch in die *.pro datei zu schreiben?



  • Rungaaz schrieb:

    aber wenn ich es reinschreibe und dann kompiliere funzt es auch nicht...
    jedenfalls ist es jetzt ein anderer error also er findet die QtOpenGL.h

    Tja, die QtOpenGL.h gibt es auch nicht...

    btw: wie bringe ich QT dazu QT += opengl automatisch in die *.pro datei zu schreiben?

    Da wirst du kein Glück haben. Ein qmake -project erstellt dir ein minimales .pro. Alles andere muss man immer selber erledigen.
    Vllt. ist das mit ner IDE ala QtCreator/Eclpise+QtPlugin anders, wenn du sowas aber nicht nutzt musst du das händisch machen.



  • hmm,

    aber es gibt den ordner 'QtOpenGL' im QT verzeichnis...

    also wenn ich in die *.pro datei schreibe und dann im dos-prompt 'make' aus
    führe sehe ich folgendes:

    E:\Dev\Projekte-C++\QT\OpenGL>make
    e:\Programme\Qt\4.4.3\bin\qmake.exe -win32 -o Makefile OpenGL.pro
    mingw32-make -f Makefile.Debug
    mingw32-make[1]: Entering directory `E:/Dev/Projekte-C++/QT/OpenGL'
    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
    DQT_DLL -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEED
    S_QMAIN -I"..\..\..\..\Programme\Qt\4.4.3\include\QtCore" -I"..\..\..\..\Program
    me\Qt\4.4.3\include\QtCore" -I"..\..\..\..\Programme\Qt\4.4.3\include\QtGui" -I"
    ..\..\..\..\Programme\Qt\4.4.3\include\QtGui" -I"..\..\..\..\Programme\Qt\4.4.3\
    include\QtOpenGL" -I"..\..\..\..\Programme\Qt\4.4.3\include\QtOpenGL" -I"..\..\.
    .\..\Programme\Qt\4.4.3\include" -I"." -I"e:\Programme\Qt\4.4.3\include\ActiveQt
    " -I"debug" -I"." -I"..\..\..\..\Programme\Qt\4.4.3\mkspecs\default" -o debug\gl
    widget.o glwidget.cpp
    In file included from E:/Programme/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../.
    ./include/windows.h:50,
                     from ../../../../Programme/Qt/4.4.3/include/QtCore/../../src/co
    relib/global/qt_windows.h:52,
                     from ../../../../Programme/Qt/4.4.3/include/QtCore/qt_windows.h
    :1,
                     from ../../../../Programme/Qt/4.4.3/include/QtOpenGL/../../src/
    opengl/qgl.h:52,
                     from ../../../../Programme/Qt/4.4.3/include/QtOpenGL/qgl.h:1,
                     from ../../../../Programme/Qt/4.4.3/include/QtOpenGL/QtOpenGL:3
    ,
                     from glwidget.cpp:39:
    E:/Programme/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:16
    63: error: declaration of C function `LONG InterlockedCompareExchange(volatile L
    ONG*, LONG, LONG)' conflicts with
    ../../../../Programme/Qt/4.4.3/include/QtCore/../../src/corelib/arch/qatomic_win
    dows.h:387: error: previous declaration `long int InterlockedCompareExchange(lon
    g int*, long int, long int)' here
    E:/Programme/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:16
    67: error: declaration of C function `LONG InterlockedDecrement(volatile LONG*)'
     conflicts with
    ../../../../Programme/Qt/4.4.3/include/QtCore/../../src/corelib/arch/qatomic_win
    dows.h:389: error: previous declaration `long int InterlockedDecrement(long int*
    )' here
    E:/Programme/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:16
    68: error: declaration of C function `LONG InterlockedExchange(volatile LONG*, L
    ONG)' conflicts with
    ../../../../Programme/Qt/4.4.3/include/QtCore/../../src/corelib/arch/qatomic_win
    dows.h:390: error: previous declaration `long int InterlockedExchange(long int*,
     long int)' here
    E:/Programme/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:16
    72: error: declaration of C function `LONG InterlockedExchangeAdd(volatile LONG*
    , LONG)' conflicts with
    ../../../../Programme/Qt/4.4.3/include/QtCore/../../src/corelib/arch/qatomic_win
    dows.h:391: error: previous declaration `long int InterlockedExchangeAdd(long in
    t*, long int)' here
    E:/Programme/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:16
    76: error: declaration of C function `LONG InterlockedIncrement(volatile LONG*)'
     conflicts with
    ../../../../Programme/Qt/4.4.3/include/QtCore/../../src/corelib/arch/qatomic_win
    dows.h:388: error: previous declaration `long int InterlockedIncrement(long int*
    )' here
    mingw32-make[1]: *** [debug/glwidget.o] Error 1
    mingw32-make[1]: Leaving directory `E:/Dev/Projekte-C++/QT/OpenGL'
    mingw32-make: *** [debug] Error 2
    

    mfg rungaaz



  • da ich 'normale' Qt-Apps problemlos unter Dev-C++ kompilieren kann, habe ich versucht ein Qt-OpenGl-App zu kompilieren - funzt aber auch da nicht...

    btw: wenn jemand das gleiche problem hatte wie ich, dass er bei jedem neuem QT-Projekt unter Dev-C++ in den projekt options die include-dirs und die library-dirs ändern musste um das projekt zu kompilieren, für den gibt es 2 lösungen:

    1.)
    -die librarys (alle *.a-dateien) in das verzeichnis '\Dev-Cpp\lib' kopieren.
    -die includes (alle ordner die im verzeichnis '\QT\4.4.x\include' liegen) in das verzeichnis '\Dev-Cpp\include' kopieren.

    -oder-

    2.)
    in der datei 'QT4 Application.template' alle verzeichnisse bei 'Include' und 'Linker' ändern.
    bei mir sieht das folgendermaßen aus:

    [Template]
    ver=1
    Name=QT 4.0 Application
    IconIndex=0
    Description=A basic template for QT 4.0 applications
    Catagory=Basic
    
    [Unit0]
    CName=
    CppName=main.cpp
    C=
    Cpp=QT4_Application_main.cpp.txt
    
    [Project]
    IsCpp=1
    NoConsole=1
    IsDll=0
    UnitCount=1
    Type=0
    Name=QtApp
    Linker=E:/Programme/Qt/4.4.3/lib/libQt3Support4.a_@@_E:/Programme/Qt/4.4.3/lib/libQt3Supportd4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtAssistantClient4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtAssistantClientd4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtCLucene4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtCLucened4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtCore4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtCored4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtDesigner4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtDesignerComponents4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtDesignerComponentsd4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtDesignerd4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtGui4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtGuid4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtHelp4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtHelpd4.a_@@_E:/Programme/Qt/4.4.3/lib/libqtmain.a_@@_E:/Programme/Qt/4.4.3/lib/libqtmaind.a_@@_E:/Programme/Qt/4.4.3/lib/libQtNetwork4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtNetworkd4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtOpenGL4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtOpenGLd4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtScript4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtScriptd4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtSql4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtSqld4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtSvg4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtSvgd4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtTest4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtTestd4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtUiTools.a_@@_E:/Programme/Qt/4.4.3/lib/libQtUiToolsd.a_@@_E:/Programme/Qt/4.4.3/lib/libQtWebKit4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtWebKitd4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtXml4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtXmld4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtXmlPatterns4.a_@@_E:/Programme/Qt/4.4.3/lib/libQtXmlPatternsd4.a_@@_
    Includes=E:\Programme\QT\4.4.3\include\phonon;E:\Programme\QT\4.4.3\include\Qt;E:\Programme\QT\4.4.3\include\Qt3Support;E:\Programme\QT\4.4.3\include\QtAssistant;E:\Programme\QT\4.4.3\include\QtCore;E:\Programme\QT\4.4.3\include\QtDBus;E:\Programme\QT\4.4.3\include\QtDesigner;E:\Programme\QT\4.4.3\include\QtGui;E:\Programme\QT\4.4.3\include\QtHelp;E:\Programme\QT\4.4.3\include\QtNetwork;E:\Programme\QT\4.4.3\include\QtOpenGL;E:\Programme\QT\4.4.3\include\QtScript;E:\Programme\QT\4.4.3\include\QtSql;E:\Programme\QT\4.4.3\include\QtSvg;E:\Programme\QT\4.4.3\include\QtTest;E:\Programme\QT\4.4.3\include\QtUiTools;E:\Programme\QT\4.4.3\include\QtWebKit;E:\Programme\QT\4.4.3\include\QtXml;E:\Programme\QT\4.4.3\include\QtXmlPatterns
    Libs="E:\Programme\Dev-Cpp/lib"
    

    ACHTUNG: bei euch ist wahrscheinlich der pfad zu QT und Dev-Cpp anders!

    ich hoffe ich konnte vll. so manchen helfen 🙂

    mfg rungaaz



  • Du hast Konflikte mit Funktions-Deklarationen 😉

    E:/Programme/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:16
    63: error: declaration of C function `LONG InterlockedCompareExchange(volatile L
    ONG*, LONG, LONG)' conflicts with
    ../../../../Programme/Qt/4.4.3/include/QtCore/../../src/corelib/arch/qatomic_win
    dows.h:387: error: previous declaration `long int InterlockedCompareExchange(lon
    g int*, long int, long int)' here
    

    In qatomic_windows.h Zeile 387 und winbase.h Zeile 16 wird InterlockedCompareExchange deklariert.
    K.A. was da los ist. Falsches mkspec? Hast du einen Header bearbeitet? Qt4 selber kompiliert?

    Was ich so gelesen hab ist ja dev-cpp recht veraltet (fehlerbehaftet?). Schau dir einfach mal Eclipse, Code::Blocks oder den neuen QtCreator an. Vllt. hast du da solche Probleme nicht mehr.

    Aber wirklich helfen kann ich dir da jetzt leider nicht. Hab keinen Windows-Rechner in der Nähe...

    Grüße
    Franz



  • also ich hab eig. keinen header bearbeitet und QT hab ich auch nicht selbst kompiliert.

    bei den umgebungsvariablen hab ich eine 'QTMAKESPEC'-variable aber kein 'mkspec'
    ich hab die variablen ganz nach diesem thread eingerichtet

    trozdem schonmal vielen dank!

    mfg Rungaaz



  • hi

    hatte grad auch diesen linker-Fehler.
    Kann es sein, dass du den Destruktor vergessen hast?

    grüße


Anmelden zum Antworten