Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3589 connectés 

 


Dernière réponse
Sujet : Problème de compilation avec Qt
nathan_g
 
Bonjour, j'ai déja posé cette question sur le forum C++ de programmation mais on m'y a conseillé de vous la poser également.
 
Je ne suis pas administrateur sur ma machine et j'ai voulu faire joujou avec gcc en installant sur mon compte une version plus récente (la 3.3.2) à l'adresse ~/toto et éviter d'utiliser l'ancienne (la 2.96).  
 
Le problème c'est que je me retrouve avec un programmes qui n'est plus compilable simultanément sous les deux versions, alors que précédemment j'arrivais à le compiler au moins sous l'ancienne (la 2.96) :
 
#include <qapplication.h>  
#include <qlabel.h>  
 
int main( int argc, char **argv )  
{  
    QApplication myapp( argc, argv );  
    QLabel* myLabel = new QLabel("Hello World!",0,"my hello" );  
    myLabel->setGeometry(400,300,120,90);  
    myapp.setMainWidget(myLabel);  
    myLabel->show();  
    return myapp.exec();  
}  
 
avec la version 2.96, la commande :  
 
g++ -O -o main main.C -I/repqt/include -L/repqt/lib -lqt  
 
fonctionne et me donne le résultat attendu (repqt fait référence au chemin où j'ai installé Qt).  
 
Si j'essaye d'utiliser la version 3.3.2 (remplacement de g++ par l'adresse du binaire lançant l'éxécution du compilateur) que j'ai installé, la même commande donne le résultat :  
 
/tmp/ccrBgMqt.o: In function `main':  
/tmp/ccrBgMqt.o(.text+0x27): undefined reference to `QApplication::QApplication[in-charge](int&, char**)'  
/tmp/ccrBgMqt.o(.text+0x4c): undefined reference to `QString::QString[in-charge](char const*)'  
/tmp/ccrBgMqt.o(.text+0x70): undefined reference to `QLabel::QLabel[in-charge](QString const&, QWidget*, char const*, unsigned)'  
/tmp/ccrBgMqt.o(.text+0x8a): undefined reference to `QString::shared_null'  
....  
/tmp/ccrBgMqt.o(.gnu.linkonce.r._ZTV6QGList+0xc): undefined reference to `QGList::clear()'  
/tmp/ccrBgMqt.o(.gnu.linkonce.r._ZTV6QGList+0x10): undefined reference to `QGList::~QGList [in-charge]()'  
/tmp/ccrBgMqt.o(.gnu.linkonce.r._ZTV6QGList+0x14): undefined reference to `QGList::~QGList [in-charge deleting]()'  
....  
collect2: ld returned 1 exit status  
 
(les ... correspondent à des lignes similaires).  
 
D'où vient l'erreur ? Est ce qu'il manque une ligne à la compilation ? En fait, est ce qu'il faut que je rajoute qqch pour permettre au compilateur de trouver l'adresse des librairies Qt (pourtant une commande de compilation écrite de manière similaire fonctionnait avec la précédente version de g++) ? J'espère également que mes variables d'environnement, notamment LD_LIBRARY_PATH, sont bien définies.  
 
Sur le forum C++, on m'a conseillé, pour résoudre mon problème, de recompiler Qt lors de la création de mon éxécutable. Je voudrais également savoir en quoi cela consiste car je ne l'ai pas très bien compris. N'est ce pas ce que j'ai déja fait à l'installation de ma version de Qt ?

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
nathan_g
 
Bonjour, j'ai déja posé cette question sur le forum C++ de programmation mais on m'y a conseillé de vous la poser également.
 
Je ne suis pas administrateur sur ma machine et j'ai voulu faire joujou avec gcc en installant sur mon compte une version plus récente (la 3.3.2) à l'adresse ~/toto et éviter d'utiliser l'ancienne (la 2.96).  
 
Le problème c'est que je me retrouve avec un programmes qui n'est plus compilable simultanément sous les deux versions, alors que précédemment j'arrivais à le compiler au moins sous l'ancienne (la 2.96) :
 
#include <qapplication.h>  
#include <qlabel.h>  
 
int main( int argc, char **argv )  
{  
    QApplication myapp( argc, argv );  
    QLabel* myLabel = new QLabel("Hello World!",0,"my hello" );  
    myLabel->setGeometry(400,300,120,90);  
    myapp.setMainWidget(myLabel);  
    myLabel->show();  
    return myapp.exec();  
}  
 
avec la version 2.96, la commande :  
 
g++ -O -o main main.C -I/repqt/include -L/repqt/lib -lqt  
 
fonctionne et me donne le résultat attendu (repqt fait référence au chemin où j'ai installé Qt).  
 
Si j'essaye d'utiliser la version 3.3.2 (remplacement de g++ par l'adresse du binaire lançant l'éxécution du compilateur) que j'ai installé, la même commande donne le résultat :  
 
/tmp/ccrBgMqt.o: In function `main':  
/tmp/ccrBgMqt.o(.text+0x27): undefined reference to `QApplication::QApplication[in-charge](int&, char**)'  
/tmp/ccrBgMqt.o(.text+0x4c): undefined reference to `QString::QString[in-charge](char const*)'  
/tmp/ccrBgMqt.o(.text+0x70): undefined reference to `QLabel::QLabel[in-charge](QString const&, QWidget*, char const*, unsigned)'  
/tmp/ccrBgMqt.o(.text+0x8a): undefined reference to `QString::shared_null'  
....  
/tmp/ccrBgMqt.o(.gnu.linkonce.r._ZTV6QGList+0xc): undefined reference to `QGList::clear()'  
/tmp/ccrBgMqt.o(.gnu.linkonce.r._ZTV6QGList+0x10): undefined reference to `QGList::~QGList [in-charge]()'  
/tmp/ccrBgMqt.o(.gnu.linkonce.r._ZTV6QGList+0x14): undefined reference to `QGList::~QGList [in-charge deleting]()'  
....  
collect2: ld returned 1 exit status  
 
(les ... correspondent à des lignes similaires).  
 
D'où vient l'erreur ? Est ce qu'il manque une ligne à la compilation ? En fait, est ce qu'il faut que je rajoute qqch pour permettre au compilateur de trouver l'adresse des librairies Qt (pourtant une commande de compilation écrite de manière similaire fonctionnait avec la précédente version de g++) ? J'espère également que mes variables d'environnement, notamment LD_LIBRARY_PATH, sont bien définies.  
 
Sur le forum C++, on m'a conseillé, pour résoudre mon problème, de recompiler Qt lors de la création de mon éxécutable. Je voudrais également savoir en quoi cela consiste car je ne l'ai pas très bien compris. N'est ce pas ce que j'ai déja fait à l'installation de ma version de Qt ?

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)