2010-10-08 6 views
1

Je rencontre un problème lors de la compilation de la source de Qt framework version 4.1.4. (Voir l'image ci-jointe pour le texte exact d'erreur de compilateur)Qt 4.1.4 Compiler la source sur Windows avec MinGW

J'utilise cette source de Qt (http://get.qt.nokia.com/qt/source/qt-win-opensource-src-4.1.4 .zip)

et j'utilise MinGW (dernier d'ici http://sourceforge.net/projects/mingw/files/) qui a la version GCC 4.5.0.1

Pour moi, il semble que certains prototypes de fonction sont diff dans qatomic.h et de GCC winbase.h, il pourrait être en raison de Qt 4.1.4 est un peu vieux.

Quelqu'un peut-il me dire comment résoudre ce problème? En changeant la version MinGW? Ou un autre environnement?

Ce serait bien si quelqu'un a déjà compilé avec succès Qt avec MinGW dans 4.1.4 passé, alors s'il vous plaît laissez-moi savoir quelle version de MinGW et GCC ont été utilisés?


Sortie compilateur:

D:\Qt\qt-win-opensource-src-4.1.4>mingw32-make 

cd src && mingw32-make -f Makefile 

mingw32-make[1]: Entering directory `D:/Qt/qt-win-opensource-src-4.1.4/src' 
cd winmain && mingw32-make -f Makefile 

mingw32-make[2]: Entering directory `D:/Qt/qt-win-opensource-src-4.1.4/src/winma 
in' 

mingw32-make -f Makefile.Debug all 

mingw32-make[3]: Entering directory `D:/Qt/qt-win-opensource-src-4.1.4/src/winma 
in' 

g++ -c -g -g -Wall -frtti -fexceptions -DQT_THREAD_SUPPORT -DUNICODE -DQT_LARGEF 
ILE_SUPPORT -DQT_NEEDS_QMAIN -DQT_NO_CAST_TO_ASCII -DQT3_SUPPORT -DQT_MOC_COMPAT 
-I"D:/Qt/qt-win-opensource-src-4.1.4/include" -I"tmp" -I"D:/Qt/qt-win-opensourc 
e-src-4.1.4/include/QtCore" -I"d:\Qt\qt-win-opensource-src-4.1.4\include\qtmain" 
-I"tmp" -I"D:/Qt/qt-win-opensource-src-4.1.4/include/ActiveQt" -I"tmp\moc\debug 
_shared" -I"." -I"..\..\mkspecs\win32-g++" -o tmp\obj\debug_shared\qtmain_win.o 
qtmain_win.cpp 

In file included from D:/Qt/qt-win-opensource-src-4.1.4/include/QtCore/arch/qato 
mic.h:1:0, 

       from D:/Qt/qt-win-opensource-src-4.1.4/include/QtCore/../../src 
/corelib/thread/qatomic.h:31, 

       from D:/Qt/qt-win-opensource-src-4.1.4/include/QtCore/qatomic.h 
:1, 

       from D:/Qt/qt-win-opensource-src-4.1.4/include/QtCore/../../src 
/corelib/tools/qbytearray.h:28, 

       from D:/Qt/qt-win-opensource-src-4.1.4/include/QtCore/qbytearra 
y.h:1, 
       from qtmain_win.cpp:25: 

D:/Qt/qt-win-opensource-src-4.1.4/include/QtCore/arch/../../../src/corelib/arch/ 
windows/arch/qatomic.h:154:87: error: declaration of C function 'long int Interl 
ockedCompareExchange(long int*, long int, long int)' conflicts with 

c:\mingw\bin\../lib/gcc/mingw32/4.5.0/../../../../include/winbase.h:1689:13: err 
or: previous declaration 'LONG InterlockedCompareExchange(volatile LONG*, LONG, 
LONG)' here 

D:/Qt/qt-win-opensource-src-4.1.4/include/QtCore/arch/../../../src/corelib/arch/ 
windows/arch/qatomic.h:155:69: error: declaration of C function 'long int Interl 
ockedIncrement(long int*)' conflicts with 

c:\mingw\bin\../lib/gcc/mingw32/4.5.0/../../../../include/winbase.h:1702:13: err 
or: previous declaration 'LONG InterlockedIncrement(volatile LONG*)' here 
D:/Qt/qt-win-opensource-src-4.1.4/include/QtCore/arch/../../../src/corelib/arch/ 
windows/arch/qatomic.h:156:69: error: declaration of C function 'long int Interl 
ockedDecrement(long int*)' conflicts with 

c:\mingw\bin\../lib/gcc/mingw32/4.5.0/../../../../include/winbase.h:1693:13: err 
or: previous declaration 'LONG InterlockedDecrement(volatile LONG*)' here 

D:/Qt/qt-win-opensource-src-4.1.4/include/QtCore/arch/../../../src/corelib/arch/ 
windows/arch/qatomic.h:157:74: error: declaration of C function 'long int Interl 
ockedExchange(long int*, long int)' conflicts with 

c:\mingw\bin\../lib/gcc/mingw32/4.5.0/../../../../include/winbase.h:1694:13: err 
or: previous declaration 'LONG InterlockedExchange(volatile LONG*, LONG)' here 

mingw32-make[3]: *** [tmp\obj\debug_shared\qtmain_win.o] Error 1 

mingw32-make[3]: Leaving directory `D:/Qt/qt-win-opensource-src-4.1.4/src/winmai 
n' 

mingw32-make[2]: *** [debug-all] Error 2 

mingw32-make[2]: Leaving directory `D:/Qt/qt-win-opensource-src-4.1.4/src/winmai 
n' 

mingw32-make[1]: *** [sub-winmain-make_default-ordered] Error 2 

mingw32-make[1]: Leaving directory `D:/Qt/qt-win-opensource-src-4.1.4/src' 

mingw32-make: *** [sub-src-make_default-ordered] Error 2 
+0

Est-ce que ça vous dérange de me demander pourquoi vous utilisez 4.1? Est-ce que votre application ne fonctionne pas sur les versions ultérieures de qt? –

+0

Je travaille sur un projet qui a un problème de performance avec QT4.6 (à partir de maintenant), nous devons coder correctement le port et changer certaines parties pour que l'outil fonctionne correctement avec QT4.6, mais cela est prévu pour la publication ultérieure de projet. donc à partir de maintenant je suis coincé avec QT 4.1.4. – Chirag

Répondre

0

On dirait que vous avez dupliqué comprend pour Qt. Exclure C: \ mingw \ lib \ gcc \ mingw32 \ 4.5.0 de includepaths lors de la compilation

+0

oui, vous avez probablement raison, mais comment puis-je exclure le chemin "mingw include"? ce n'est pas que je ne sais pas comment éditer des fichiers makefiles, mais j'ai le paquet source et le configurateur pour générer des fichiers makefiles et je m'attends à ce qu'il fonctionne sans avoir à patcher des fichiers makefiles. Un autre problème est, je suis certain que si je vais exclure le chemin de Mingw de makefile maintenant à un stade ultérieur de la compilation, il va certainement se plaindre de l'en-tête manquant qu'il attend de "mingw include" – Chirag

+0

Je ne sais pas si Qt 4.1 est compatible avec mingw4, vous avez besoin de mingw3 pour cette ancienne version. Je ne suis pas sûr mais Qt a mingw4 compatibilités quelque part autour de Qt 4.5 –

+0

bonjour Kamil, merci !, je pense que je devrais essayer avec l'ancienne version de mingw. – Chirag

0

merci, mais je l'ai résolu, notre organisation a une licence pour QT, j'ai compilé la version commrcial de la source avec le compilateur vC++ .

Questions connexes