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

Qt Discussion :

charger une librairie .so


Sujet :

Qt

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Points : 131
    Points
    131
    Par défaut charger une librairie .so
    Bonjour, je travaille avec Qt creator sous linux et j'ai des probléme pour charger une lib .so!!J'utilise la methode classique de QLibrary mais ça marche pas!Je sais pas si ya des commandes liées à linux que je dois utiliser ??ça me prend trop la tete car je vois pas le probléme ,le programme compile bien sans renvoyer d'erreur mais la lib n'est pas chargée!
    Si quelque a des idees je suis preneur.Merci d'avance


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    QLibrary myLib("/user/local-user/bureau/fichier_linux/malibrairie") ;
     
        if(!myLib.isLoaded())
        {
            statusBar()->showMessage("The lib is not loaded") ;
     
        }

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 193
    Points
    193
    Par défaut
    Bonjour,

    Il faut ajouter la ligne suivante dans ton fichier .PRO :

    LIBS = malibrairie.so
    Logiquement, ça devrait suffire.

    Cordialement,
    PKO

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Points : 131
    Points
    131
    Par défaut
    Citation Envoyé par Altess Voir le message
    Bonjour,

    Il faut ajouter la ligne suivante dans ton fichier .PRO :

    Logiquement, ça devrait suffire.

    Cordialement,
    PKO
    Bonjour, j'ai fait exactement ce que tu m'a suggéré:
    j'ai ajouté dans mon .pro: Mais ma DLL n'est toujours pas chargé!!!Je me demande s'il faut mettre le chemin complet quand dans le constructeur de la classe QLibrairy:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QLibrary myLib("/user/local-user/bureau/fichier_linux/malibrairie") ;
    Et dans le .pro pour ajouter la lib;faut -il pas mettre le chemin complet??
    Bon ces des solutions que j'ai testé mais pas de bonnes solutions!!
    Si vous avez des propositions , je suis preneur!!
    merci d'avance

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968

  5. #5
    Membre éclairé
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Points : 709
    Points
    709
    Par défaut
    salut,
    je pense qu'il faudrait ajouter le hemin vers ta library dans LD_LIBRARY_PATH.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/chemin/vers/ta_librairie
    essaye
    a+

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Dans son code, il fait le isLoaded alors qu'elle n'est pas chargé. C'est donc toujours faux.
    C'est ecrit dans la doc

  7. #7
    Membre éclairé
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Points : 709
    Points
    709
    Par défaut
    Citation Envoyé par yan Voir le message
    Dans son code, il fait le isLoaded alors qu'elle n'est pas chargé. C'est donc toujours faux.
    C'est ecrit dans la doc
    Si elle n'est pas chargé isLoaded va retourner FAUX et le non FAUX c'est toujours vrai, oui je suis d'accord

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Points : 131
    Points
    131
    Par défaut
    Citation Envoyé par yan Voir le message
    Dans son code, il fait le isLoaded alors qu'elle n'est pas chargé. C'est donc toujours faux.
    C'est ecrit dans la doc
    Oui je fais le isLoader pour tester si la lib est chargée!J'espere que j'ai compris le minimum car pour moi :pour charger la DLL il suffit simplement de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QLibrary myLib("/user/local-user/bureau/fichier_linux/malibrairie") ;
    là normalement la dll est chargée ?Mais c'est pas le cas!!Bizarre et c'est ce qui est monté dans la doc que tu as file!

    ensuite le:
    c'est tout simplement pour tester si c'est chargé?
    Est ce j'ai bien compris?Sinon expliquez svp!
    Merci d'avance !

  9. #9
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Loads the library and returns true if the library was loaded successfully; otherwise returns false. Since resolve() always calls this function before resolving any symbols it is not necessary to call it explicitly. In some situations you might want the library loaded in advance, in which case you would use this function.
    Tout est écrit dans la doc....

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 193
    Points
    193
    Par défaut
    Au temps pour moi. Merci Yan.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Points : 131
    Points
    131
    Par défaut
    Citation Envoyé par yan Voir le message
    Tout est écrit dans la doc....
    Citation:
    Loads the library and returns true if the library was loaded successfully; otherwise returns false. Since resolve() always calls this function before resolving any symbols it is not necessary to call it explicitly. In some situations you might want the library loaded in advance, in which case you would use this function.
    ça me parait alors plus facile que je le croyais: Voici ce que j'ai fait:


    QLibrary nDLL("maLibrairie");
    nDLL.load() ;

    Voici ce que j'ai comme erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "Cannot load librairie maLibrairie(maLibrairie.so ne peut ouvrir le fichier d objet partage\c3\a9:
    Aucun fichier ou dossier de ce type).
    Alors que did_load renvoie true !!!Assez bizarre
    Ma grande question est dans le constructeur de l'objet on met que le nom de la librairie cad:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QLibrary nDLL("maLibrairie");
    !!et non le chemin
    complet alors le compilateur va chercher où pour trouver la lib??ou peut etre il faut mettre la lib dans le meme dossier du projet??Je l'ai essayé aussi mais ça marche pas!!
    Si quelqu'un tiens la solution j'en ai besoin pour pouvoir avancer svp car ça fait 2 jours que suis dessus !!ya un detail qui m'echappe alors depanner moi please!
    Merci d'avance

  12. #12
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    tu es sur de ton path?
    /user/local-user/bureau/fichier_linux/

    [edit]
    vue le message d'erreur, j'ai l'impression que ton .so utilise d'autre .so mais ne les trouve pas

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

Discussions similaires

  1. charger une librairie
    Par sliders_alpha dans le forum Général Python
    Réponses: 4
    Dernier message: 03/10/2011, 20h26
  2. charger une librairie a partir du jar
    Par 304bl dans le forum Général Java
    Réponses: 11
    Dernier message: 29/06/2011, 15h53
  3. Charger une librairie dynamique
    Par mrfirefunk dans le forum Applets
    Réponses: 1
    Dernier message: 27/11/2007, 09h36
  4. Réponses: 4
    Dernier message: 14/03/2007, 15h13
  5. [VB6] charger une librairie
    Par R@IZER dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 31/03/2006, 15h03

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