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 :

Édition des liens - undefined symbol: _ZNK5QtLib6getKeyEv


Sujet :

Qt

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8
    Par défaut Édition des liens - undefined symbol: _ZNK5QtLib6getKeyEv
    Bonsoir,

    j'ai un gros souci avec ma lib_Qt.so, je m'en remets donc a vous car je n'arrive pas a resoudre ce probleme.

    Mon projet consiste a coder un Snake compatible avec 3 bibliotheques graphiques differentes (SDL, minilibX, Qt). Les libs graphiques se contentent uniquement de l'affichage. Pour ce faire, j'utilise dlopen, dlsym et dlclose afin d'avoir un code uniforme et generique. Je donne a mon executable une largeur, une hauteur (pour la map) et la bibliotheque desiree (SDL, minilibX ou Qt). Exemple : ./nibbler 50 50 lib_Qt.so

    Voici a quoi ressemble mon main, afin de vous faire comprendre le pourquoi du comment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    int             main(int argc, char **argv)
    {
      if ((check_args(argc, argv)) == -1)
        return 1;
      ILib*         (*external_creator)(int, int, int, char **);
      void          *dlhandle;
      Nibbler       nib(atoi(argv[1]), atoi(argv[2]));
      int           stop = 0;
     
      srand(time(NULL));
      dlhandle = dlopen(argv[3], RTLD_LAZY);
      if (dlhandle == NULL)
        {
          std::cerr << "ERROR : " << argv[3] << " is not existing or is not support." << std::endl;
          std::cerr << dlerror() << std::endl;
          return 1;
        }
      external_creator = reinterpret_cast<ILib* (*)(int, int, int, char **)>(dlsym(dlhandle, "create_lib"));
      if (external_creator == NULL)
        return 1;
     
      ILib          *lib = external_creator(atoi(argv[1]), atoi(argv[2]), argc, argv);
     
      while (stop != -1 && stop != -2)
        {
          nib.pop_food();
          nib.eat();
          lib->Do_Event();
          if (lib->getKey() == 1)
            stop = nib.move("a");
          else if (lib->getKey() == 2)
            stop = nib.move("d");
          else if (lib->getKey() == -1)
            stop = -2;
          lib->Display_Snake(nib.getBody());
          lib->Display_Food(nib.getFood());
                if ((lib->Handle_Time()) == 1)
                  stop = nib.move("avance");
          lib->setKey(3);
        }
      if (stop == -1)
        std::cout << "Perdu !" << std::endl;
      else if (stop == -2)
        std::cout << "T'abandonnes ? Tafiole !" << std::endl;
      delete lib;
      dlclose(dlhandle);
      return 0;
    La partie SDL est finie ainsi que la minilibX (excepte quelques bugs sans rapport avec cette discussion). Il n'y a que la partie Qt qui me bloque.
    Lorsque j'essaie d'ouvrir ma lib_Qt.so, dlopen fail et dlerror m'indique ce message :
    undefined symbol: _ZNK5QtLib6getKeyEv

    On peut remarquer getKeyEv dans l'erreur. getKey est un getter qui me permet de savoir si la touche appuyee est la touche droite, gauche, etc. En fonction de la touche pressee, je set un nombre (avec setKey(int)) puis le recupere avec le getter dans le main afin de tourner dans la bonne direction.

    Je suppose que ce probleme vient du Makefile, pendant le linkage. Je n'arrive pas a trouver la solution. Voici en piece jointes le Makefile qui cree ma lib_Qt.so et le Qt.pro. A savoir que j'utilise des fonctions surchargees pour Qt (keyPressEvent et paintEvent).
    Il doit surement manquer un flag, mais le Makefile genere est tellement fouilli que j'ai du mal a m'y retrouver...

    Je vous remercie pour vos eclairages. N'hesitez pas a me poser des questions si ce n'est pas clair !

    P.S : desole pour les accents, je suis sur un qwerty et je n'ai pas trop le temps (je dois rendre mon projet dimanche).
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [édition des liens] ld: Missing library symbol table in
    Par kaloskagatos dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 25/08/2006, 11h27
  2. [VC++] Erreur d'édition des liens LNK1143
    Par Yellowmat dans le forum MFC
    Réponses: 6
    Dernier message: 01/02/2006, 15h00
  3. [Dev-C++] Problème d'édition des liens
    Par shura dans le forum EDI
    Réponses: 5
    Dernier message: 30/08/2005, 09h35
  4. Problème à l'édition des liens avec BCC55 et Xerces
    Par ShootDX dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 30/11/2003, 14h50

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