[gelöst] Qt 4.2.0 unter Windows kompilieren ---> FEHLER!

Verschiedenes zu Qt
Antworten
caligano
Beiträge: 126
Registriert: 19. August 2006 15:33

[gelöst] Qt 4.2.0 unter Windows kompilieren ---> FEHLER!

Beitrag von caligano »

Hallo!

Ich habe schon eine Zeitlang hier mitgelesen, doch jetzt ist es wohl an der Zeit auch mal was zu fragen :) .

Weil ich für ein Programm unbedingt eine Systemtray-Unterstützung brauche, hab ich mir gedacht, versuch ichs mal mit Qt 4.2.0 (genauer gesagt 4.2.0-snapshot-20060818).
Doch leider scheitert bei mir das Kompilieren mit MinGW:

Code: Alles auswählen

>> configure -platform win32-g++ -release

...

>> Qt is now confgured for building. Just run mingw32-make.

>> mingw32-make

...

\..\mkspecs\win32-g++" -o tmp\obj\release_shared\qwindowsxpstyle.o styles\qwindo
wsxpstyle.cpp
styles\qwindowsxpstyle.cpp: In member function `void QWindowsXPStylePrivate::dra
wBackgroundThruNativeBuffer(XPThemeData&)':
styles\qwindowsxpstyle.cpp:1084: warning: taking address of temporary
styles\qwindowsxpstyle.cpp: In member function `virtual void QWindowsXPStyle::dr
awControl(QStyle::ControlElement, const QStyleOption*, QPainter*, const QWidget*
) const':
styles\qwindowsxpstyle.cpp:2426: error: `TMT_TEXTSHADOWTYPE' undeclared (first u
se this function)
styles\qwindowsxpstyle.cpp:2426: error: (Each undeclared identifier is reported
only once for each function it appears in.)
styles\qwindowsxpstyle.cpp:2451: warning: unused variable 'rbOpt'
styles\qwindowsxpstyle.cpp: In member function `virtual void QWindowsXPStyle::dr
awComplexControl(QStyle::ComplexControl, const QStyleOptionComplex*, QPainter*,
const QWidget*) const':
styles\qwindowsxpstyle.cpp:3005: error: `TMT_TEXTSHADOWTYPE' undeclared (first u
se this function)
styles\qwindowsxpstyle.cpp: In member function `virtual int QWindowsXPStyle::sty
leHint(QStyle::StyleHint, const QStyleOption*, const QWidget*, QStyleHintReturn*
) const':
styles\qwindowsxpstyle.cpp:3629: warning: unused variable 'rbOpt'
styles\qwindowsxpstyle.cpp: In member function `virtual QPixmap QWindowsXPStyle:
:standardPixmap(QStyle::StandardPixmap, const QStyleOption*, const QWidget*) con
st':
styles\qwindowsxpstyle.cpp:3660: warning: unused variable 'dwOpt'
styles\qwindowsxpstyle.cpp: In member function `QIcon QWindowsXPStyle::standardI
conImplementation(QStyle::StandardPixmap, const QStyleOption*, const QWidget*) c
onst':
styles\qwindowsxpstyle.cpp:3692: warning: unused variable 'dwOpt'
styles\qwindowsxpstyle.cpp:3729: warning: unused variable 'dwOpt'
styles\qwindowsxpstyle.cpp:3765: warning: unused variable 'dwOpt'
styles\qwindowsxpstyle.cpp: In member function `virtual void QWindowsXPStyle::dr
awControl(QStyle::ControlElement, const QStyleOption*, QPainter*, const QWidget*
) const':
styles\qwindowsxpstyle.cpp:2188: warning: enumeration value `TriangularNorth' no
t handled in switch
styles\qwindowsxpstyle.cpp:2188: warning: enumeration value `TriangularSouth' no
t handled in switch
styles\qwindowsxpstyle.cpp:2188: warning: enumeration value `TriangularWest' not
 handled in switch
styles\qwindowsxpstyle.cpp:2188: warning: enumeration value `TriangularEast' not
 handled in switch
styles\qwindowsxpstyle.cpp:2188: warning: enumeration value `TriangularAbove' no
t handled in switch
styles\qwindowsxpstyle.cpp:2188: warning: enumeration value `TriangularBelow' no
t handled in switch
mingw32-make[3]: *** [tmp\obj\release_shared\qwindowsxpstyle.o] Error 1
mingw32-make[3]: Leaving directory `C:/Qt/4.2.0/src/gui'
mingw32-make[2]: *** [release] Error 2
mingw32-make[2]: Leaving directory `C:/Qt/4.2.0/src/gui'
mingw32-make[1]: *** [sub-gui-make_default] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/4.2.0/src'
mingw32-make: *** [sub-src-make_default-ordered] Error 2
Umgebungsvariablen habe ich alle gesetzt, wenn dass das Problem wäre, würde doch schon configure scheitern , oder ?

Wenn ich

Code: Alles auswählen

>> configure -platform win32-g++ 
eingebe (also ohne -release), funktioniert es auch nicht und der Fehler tritt bei der gleichen Datei (qwindowsxpstyle.cpp) auf !

Vielleicht erkennt ihr woran das liegt?
Und: Qt 4.2.0 gibt es wohl kaum als Binary für Win ?


Danke schon mal ,
caligano
Zuletzt geändert von caligano am 1. September 2006 01:35, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Binaries gibts nicht für Snapshots, ja.
Evtl. hast du eine zu alte win32api -> http://sf.net/projects/mingw -> Files -> win32api. Die dann nach Programme\MinGW entpacken und nochmal probieren.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
caligano
Beiträge: 126
Registriert: 19. August 2006 15:33

Beitrag von caligano »

Hallo!

Danke erstmal für den Tipp!

Jetzt erhalte ich wieder eine andere Fehlermeldung :( :

Code: Alles auswählen

...

+" -o tmp\obj\debug_shared\qfiledialog_win.o dialogs\qfiledialog_win.cpp
dialogs\qfiledialog_win.cpp: In function `QString qt_win_get_save_file_name(cons
t QFileDialogArgs&, QString*, QString*)':
dialogs\qfiledialog_win.cpp:435: error: invalid conversion from `const ushort*'
to `const WCHAR*'
mingw32-make[3]: *** [tmp\obj\debug_shared\qfiledialog_win.o] Error 1
mingw32-make[3]: Leaving directory `C:/Qt/4.2.0/src/gui'
mingw32-make[2]: *** [debug-all] Error 2
mingw32-make[2]: Leaving directory `C:/Qt/4.2.0/src/gui'
mingw32-make[1]: *** [sub-gui-make_default] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/4.2.0/src'
mingw32-make: *** [sub-src-make_default-ordered] Error 2

Ich habe jetzt auch mal die restlichen MinGW-Komponenten gemäß http://www.trolltech.com/developer/notes/compilers/gcc upgedatet, aber leidert ändert sich dadurch nichts.

Außerdem verwende ich jetzt den Snapshot von heute (19. ) !

Was kann man noch tun?
Und hat überhaupt jemand von euch schon Qt 4.2 auf Win kompiliert ?

mfg caligano
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

const WCHAR* und const ushort* sind gleich gross - kannst Du also gefahrlos casten. Das kann bei Snapshots schonmal auftreten.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
caligano
Beiträge: 126
Registriert: 19. August 2006 15:33

Beitrag von caligano »

Christian81 hat geschrieben:const WCHAR* und const ushort* sind gleich gross - kannst Du also gefahrlos casten
ähm und was muss ich nun eingeben ?

z.B.

Code: Alles auswählen

 mingw32-make - B 
-B =: Unconditionally make all targets

//edit : hm tuts auch nicht ... bricht gleich ab!

Sorry für meine Begriffsstutzigkeit :oops:
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Zeig einfach mal was in Zeile 435 von qfiledialog_win.cpp steht
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
caligano
Beiträge: 126
Registriert: 19. August 2006 15:33

Beitrag von caligano »

Dast ist mal die Funktion die in der Fehlermeldung auftaucht (ist allerdings nicht in Zeile 435 !!):

Code: Alles auswählen

QString qt_win_get_save_file_name(const QFileDialogArgs &args,
                                  QString *initialDirectory,
				  QString *selectedFilter)
{
    QString result;

    QString isel = args.selection;
    if (initialDirectory && initialDirectory->left(5) == "file:")
        initialDirectory->remove(0, 5);
    QFileInfo fi(*initialDirectory);

    if (initialDirectory && !fi.isDir()) {
        *initialDirectory = fi.absolutePath();
        if (isel.isEmpty())
            isel = fi.fileName();
    }
und nun hier Zeile 435 ff :

Code: Alles auswählen

QT_WA({
        // Use Unicode strings and API
        OPENFILENAME *ofn = qt_win_make_OFN(args.parent, args.selection,
                                            args.directory, args.caption,
                                            qt_win_filter(args.filter),
					    QFileDialog::AnyFile,
					    args.options);

        ofn->lpstrDefExt = defaultSaveExt.utf16();
        
        if (idx)
            ofn->nFilterIndex = idx + 1;
        if (GetSaveFileName(ofn)) {
            result = QString::fromUtf16((ushort*)ofn->lpstrFile);
            selFilIdx = ofn->nFilterIndex;
        }
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Es könnte

Code: Alles auswählen

ofn->lpstrDefExt = defaultSaveExt.utf16();
sein... ->

Code: Alles auswählen

ofn->lpstrDefExt = (WCHAR*)defaultSaveExt.utf16(); 
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
caligano
Beiträge: 126
Registriert: 19. August 2006 15:33

Beitrag von caligano »

yeah! Kaum zu glauben aber wahr, das hat funktioniert :-)

Danke! Und morgen probier ich's dann mal mit configure -static, mal schaun ob das geht :)

mfg caligano
Antworten