IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

inclusion de librairie avec Mingw


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Par défaut inclusion de librairie avec Mingw
    Bonjour,
    Je souhaiterai inclure des librairies à la compilation avec MinGW. Mon souci est que les fichiers ont une extension .a et non .lib (ce sont des librairies Qt). L'option -l ne fonctionne donc pas.

    Si quelqu'un sait quelle option rajouter, Merci d'avance.

    Bonne journée

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    l'option -l marche très bien avec les .a
    D'ailleurs , les .lib sont les lib statique pour visual et les .a sont les lib statique de GCC.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Pourtant, MinGW accepte bel et bien les .a ...
    Quel est le problème que tu rencontres ?

  4. #4
    screetch
    Invité(e)
    Par défaut
    si tu as une bib .a alors elle s'appelle
    libqt4mt.a

    dans ce cas il ne faut pas lier avec -llibqt4mt
    mais avec -lqt4mt

    la regle generale des libs c'est :
    sous Visual LIBRARY.lib
    sous mingw libLIBRARY.a
    et tu specifies LIBRARY au compilateur dans tous les cas.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Par défaut
    Alors la lib s'appelle libQtGui4.a
    Donc lorsque je fais un -llibQtGui4 il me dit qu'il ne l'a trouve pas.
    Quand je fais un -lQtGui4 j'ai ce message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    g++ -LD:\Qt\4.3.1\lib -o..\..\..\bin_debug\visuel_test.exe Main.o -lQtGui4
    Main.o: In function `ZN7QStringC1EPKc':D:/Qt/4.3.1/include/QtCore/../../src/corelib/arch/qatomic_windows.h:(.text$_ZN7QStringD1Ev[QString::~QString()]+0x20): undefined reference to `_imp___ZN7QString4freeEPNS_4DataE'
    :D:/Qt/4.3.1/include/QtCore/../../src/corelib/arch/qatomic_windows.h:(.text$_ZN7QStringC1EPKc[QString::QString(char const*)]+0x19): undefined reference to `_imp___ZN7QString16fromAscii_helperEPKci'
    collect2: ld returned 1 exit status
    Build completed with errors
    Time consumed: 641  ms.

    et si je ne fais aucun link :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    g++ -ID:\Qt\4.3.1\include\QtGui -ID:\Qt\4.3.1\include -O0 -g3 -Wall -c -fmessage-length=0 -oMain.o ..\Main.cpp
    g++ -o..\..\..\bin_debug\visuel_test.exe Main.o
    Main.o: In function `main':D:/ETL/Dev/pgi/visuel_test/Debug/../Main.cpp:6: undefined reference to `_imp___ZN12QApplicationC1ERiPPci'
    :D:/ETL/Dev/pgi/visuel_test/Debug/../Main.cpp:8: undefined reference to `_imp___ZN11QPushButtonC1ERK7QStringP7QWidget'
    :D:/ETL/Dev/pgi/visuel_test/Debug/../Main.cpp:12: undefined reference to `_imp___ZN12QApplication4execEv'
    :D:/ETL/Dev/pgi/visuel_test/Debug/../Main.cpp:12: undefined reference to `QPushButton::~QPushButton()'
    :D:/ETL/Dev/pgi/visuel_test/Debug/../Main.cpp:12: undefined reference to `QApplication::~QApplication()'
    :D:/ETL/Dev/pgi/visuel_test/Debug/../Main.cpp:12: undefined reference to `QPushButton::~QPushButton()'
    :D:/ETL/Dev/pgi/visuel_test/Debug/../Main.cpp:12: undefined reference to `QApplication::~QApplication()'
    Main.o: In function `ZN7QStringC1EPKc':D:/Qt/4.3.1/include/QtCore/../../src/corelib/arch/qatomic_windows.h:(.text$_ZN7QWidget6resizeEii[QWidget::resize(int, int)]+0x2d): undefined reference to `_imp___ZN7QWidget6resizeERK5QSize'
    :D:/Qt/4.3.1/include/QtCore/../../src/corelib/arch/qatomic_windows.h:(.text$_ZN7QStringD1Ev[QString::~QString()]+0x20): undefined reference to `_imp___ZN7QString4freeEPNS_4DataE'
    :D:/Qt/4.3.1/include/QtCore/../../src/corelib/arch/qatomic_windows.h:(.text$_ZN7QStringC1EPKc[QString::QString(char const*)]+0x19): undefined reference to `_imp___ZN7QString16fromAscii_helperEPKci'
    collect2: ld returned 1 exit status
    Build completed with errors
    Le variable qu'il ne trouve pas sont dans dll que j'ai localisé


    [EDIT]
    j'ai trouvé la 2 eme lib qui manqué donc les links se passent bien. un warning a la compil cependant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Severity and Description	Path	Resource	Location	Creation Time	Id
    Invalid project path: Duplicate path entries.		visuel_test	pathentry	1187690883937	2387

  6. #6
    screetch
    Invité(e)
    Par défaut
    il faut inclure plus de libs que ca pour Qt

    je les ai pas sous la main mais y'a aussi QtCore au minimum (QtCore4 ou je sais pas)

    donc :
    -lQtGui4 -lQtCore4

    et continuer a rajouter des libs jusqu'a ce qu'il soit content

  7. #7
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Regarde dans le dossier include de Qt. Tu as plusieurs répertoires.
    Regarde dans le dossier lib de Qt : si mes souvenirs sont bons, tu as autant de fichiers .a que de répertoires dans include. Si tu inclues QtGui/QDialog par exemple, tu devras lier libQtGui.a comme suit : -lQtGui

    Avec MinGW, si tu as le fichier libXXX.a, tu dois lier avec l'option -lXXX.
    C'est simple à retenir.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Par défaut
    Oui le problème des links est résolu merci.
    De même pour le warning.

    Mon programme compile correctement mais l'exectution ne se fait pas mais ça c'est un autre probleme.

    Merci a vous tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb de type avec Mingw
    Par titus55 dans le forum C++
    Réponses: 4
    Dernier message: 06/10/2005, 12h59
  2. Importer librairies avec LCC WIN32
    Par Jiraiya42 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 02/10/2005, 22h30
  3. Opérateur not ? Bug avec MinGW 3.4 ? ou mot clé ?
    Par Groove dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 31/01/2005, 18h05
  4. Inclusion de librairie ratée
    Par glop - pas glop dans le forum MFC
    Réponses: 21
    Dernier message: 15/02/2004, 18h41
  5. Réponses: 2
    Dernier message: 30/09/2003, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo